2011-07-04 46 views
1

有沒有辦法設置GC的時間限制?設置GC時間限制/刪除事件中的分配

我在問,因爲我正在編寫一個遊戲,在每個事件上分配一些浮點數,整數和長整數,我寧願短時間(5-20​​毫秒)調用GC來刪除它們。然後我會在每個遊戲循環中調用GC。這種方式將是我個人的最愛,因爲我仍然有一些分配,如果沒有很多努力就不能回溯(我已經刪除了大部分內容)。

另外,我會尋找其他分配,並以某種方式阻止它們,但是然後我需要一種方法來防止事件中的分配。

這裏的,如果需要配置跟蹤的結果:http://textsave.de/?p=67220

編輯: 我真的不能找到與分配跟蹤任何東西,所有的對象都是從一些遙遠的Java內部類(甚至在跟蹤)。此外,顯示的對象不在所收集的數字附近(除非垃圾收集器將float []計數爲多個對象)。

有人有這個問題嗎?

回答

1

有沒有辦法設置GC的時間限制?

不,但已經很短了。

我這麼問是因爲我在寫一個遊戲,分配每個事件

不要做一些浮動,整數和多頭。預先分配你的記憶。

我寧願打電話給GC短時間(5-20​​ms)以除去這些。然後我會在每個遊戲循環中調用GC

歡迎您致電System.gc(),但您無法控制其運行的持續時間。它通常在幾十毫秒的量級上。但是,通過維護自己的對象池,避免分配首先會更好地爲您服務。

+0

我該怎麼做?預先分配一個在我無法編輯的代碼中創建的對象的內存?我看過谷歌,但我一定在搜索錯誤。 – SBoss

+0

@SBoss:「爲代碼中創建的對象預分配內存,我無法編輯它?」 - 如果可以的話,預先分配對象本身。或者,不要在遊戲中使用此代碼。適用於傳統Android應用程序的編程實踐不一定適用於遊戲開發。另外,請記住,在較新的Android設備上,垃圾收集在後臺線程中並行發生,因此沒有「停止世界」的時間。 – CommonsWare

+0

我的目標plattform是2.1+,所以我不能選擇那個。你知道另一種閱讀觸摸事件的方式嗎?不知何故,onTouch(View,MotionEvent)調用分配了相當多的東西。所以,迄今爲止我所見過的所有對象都是在後面的代碼中創建的。我會繼續努力尋找它是否真的不只是我。 – SBoss