Java控制垃圾收集器

时间:2015-06-30 09:59:33

标签: java android garbage-collection

我正在使用OpenGLES 2.0创建Android游戏,我的游戏目前可以渲染高达每秒55-60帧,但我对垃圾收集器有一点问题,它减慢到每秒35帧,你可以看到一个会损害用户体验的延迟。它在完全随机的时刻运行。

我的问题:

是否有可能以某种方式控制垃圾收集器的执行,例如我可以将GC延迟0.5秒或之前调用GC并确保在接下来的两秒内不会调用GC吗?或者有没有办法减少GC对应用程序执行的影响?

3 个答案:

答案 0 :(得分:2)

基本上您无法停止GC,但可以使用System.gc()

强制拨打电话

尝试these步骤以避免GC出现此类问题

答案 1 :(得分:2)

垃圾收集器在需要从未使用的对象中释放内存时启动。

最好的操作方法是减少重用旧对象的数量。

阅读您的代码,每当您看到new关键字问自己时,我真的需要一个新的对象吗?或者我可以重置旧的未使用的对象?

尝试阅读开发人员Android网站http://developer.android.com/training/articles/perf-tips.html

中的提示

注意:System.gc()的调用只是对垃圾收集系统的建议,该系统会自动选择何时运行。从javadoc “调用此方法建议,Java虚拟机花费精力回收未使用的对象......”

答案 2 :(得分:1)

您不能以太多方式影响GC。它会在必要时运行(当它决定它想要时)。

您可以尝试通过减少创建的对象,避免创建它们或重用旧对象来尽量减少收集的数量。