我一直在爲Android的遊戲工作,並在我的N1上進行調試。起初,表演並不完整。然後我開始清理所有分配以防止垃圾收集。這大大改善了事情,但我仍然看到一些垃圾收集發生,導致動畫短暫暫停。Android遊戲開發和垃圾收集
將頭髮拉出一段時間後,我注意到正在進行垃圾回收的進程ID(GC_FOR_MALLOC)不是我的進程ID。進程ID屬於「Android系統」和android.process.acore(通過使用市場上的「Android系統信息」應用程序確定)。 acore進程與桌面組件(稱爲數字時鐘)綁定。我卸載了小部件,幾乎在整個遊戲中都沒有任何停頓。 GC爲「Android系統」暫停了一個簡短的停頓。
對不起,長的解釋,但現在我的問題:
- 它是如何,其他遊戲不偶爾有停頓,由於系統進程的GC(東西了開發者的控制的)?
- 根據第一個問題,我該如何處理導致GC的不同應用程序,從而降低了我的流程並導致了我的遊戲中的打嗝?
我只是覺得有什麼我失蹤,因爲其他遊戲沒有這個問題。
謝謝
如果你的應用程序對垃圾收集器很敏感,那麼你做錯了。 – Falmarri 2011-01-07 00:10:35
你可能在http://gamedev.stackexchange.com/有更好的運氣,用於遊戲開發的具體問題。我不確定這有一個簡單的答案。你無法阻止gc,只是把它們降到最低。 2.3包含併發gc,但如果您想要定位較早的平臺,那麼這並不會有多大幫助。 – 2011-01-07 00:14:18