【发布时间】:2012-01-06 00:05:15
【问题描述】:
我正在制作一个快节奏的实时 Android 游戏,一切运行良好,但游戏开始的前几秒非常滞后,因为加载后垃圾收集器正在清理线。当然,玩家可以等待几秒钟(比如 10 多秒),因为完成后它开始运行非常流畅,但这看起来真的很难看,感觉游戏有问题。
有没有办法(或技术)来判断何时可以安全地开始游戏,这样垃圾收集器就不会在实时部分开始时就开始发疯?在不破坏事物的情况下,大脂肪加载线程不能减少太多。
【问题讨论】:
-
"非常缓慢,因为垃圾收集器在加载线程之后进行清理。" - 这是否表明您在加载期间正在搅动内存,或者只是加载时间?如果是前者,那你可以避免吗?
-
@Mitch:这表明加载器使用了很多对象(或一些大型对象)。在初始化完成之前,它们可能都不符合收集条件。
-
@cHao:我很好奇为什么加载器需要很多对象?
-
@Mitch:因为它正在设置所有内容并让应用程序准备好运行?可能有各种各样的配置加载、资源查找、XML 解析等等等等……一旦一切都配置和加载并准备好,大部分东西都可以扔掉。但在此之前,加载程序仍然可以引用大量的东西。
-
@CHao:我认为这更有可能是 JIT 而不是加载本身。 (正如斯蒂芬 C 提到的)
标签: java android performance garbage-collection