我正在爲Android> = 2.1編寫實時街機遊戲。在遊戲過程中,我不會分配內存,不會引誘GC。如果GC調用,則需要70-200ms的處理器。用戶將此視爲「哦,不,那場比賽是落後的......」。其他進程調用GC會減慢我的遊戲速度
我檢查了LogCat。有很多GC_FOR_MALLOC或GC_EXPLICIT。但是...不是來自我的過程的PID!我的比賽不會造成他們。它們是由於其他進程在後臺運行造成的。一些壁紙,小工具,收音機,電子郵件,天氣檢查和其他服務...
我不完全理解它。我想,當例如壁紙消失時,它的onPause()被調用。所以,它應該停止它的所有線程,並且肯定不會分配任何內存(或者調用System.gc())。也許這是錯誤的實施?我不知道。但也有一些Android服務,這也導致GC不時......這很奇怪。
這是一個大的Android < = 2.2架構瑕疵? Android 2.3 introduces併發GC,需要更少的時間。
我能做些什麼來確保我的遊戲順利運行?
爲什麼你不相信?是的,我已經在2.2和4.1上測試過了。 2.2上的行爲就像我所描述的那樣。正如我所提到的那樣,在4.1中,有一個併發GC,這使得這個問題不那麼嚴重。 – 2013-03-22 13:49:39