我一直在为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