我正在编写一个小型 Android 游戏,每当我第一次运行时,一切都工作正常,但它会随机挂起并开始在 eclipse 的 LogCat 中无休止地发送垃圾邮件
12-30 12:40:05.344: D/dalvikvm(22831): WAIT_FOR_CONCURRENT_GC blocked 5ms 12-30 12:40:05.383: D/dalvikvm(22831): GC_CONCURRENT freed 511K, 34% free 2374K/3552K, paused 1ms+2ms, total 14ms
我知道这与垃圾收集有关,但每当我强制停止应用程序(关闭它的唯一方法)时,我会丢失大约 5-10mb 的可用内存,直到重新启动设备。有谁知道这意味着什么以及如何预防?
我使用的设备是运行 android 4.2.1(Cyanogenmod 10.1) 的 verizon Galaxy Nexus,sdk/target 版本为 3.2(api level 13)。谢谢!
最佳答案
您将能够通过 Google 找到更详细的描述,但基本上,这仅意味着您使垃圾收集器工作非常努力。
游戏编程与“普通”应用程序编程不同:您的游戏可能会循环无数次。 因此,即使是微小的内存泄漏也可能迅速发展成为真正的问题。
此外,GC通常是你最好的 friend ,在游戏中它几乎是你的敌人之一。每次 GC 运行都会产生一点卡住,因为它“停止了世界”。
我建议您继续搜索特定的游戏编程教程以及如何在其中对抗 GC。
关于java - Eclipse 的 LogCat 被 Android 的 WAIT_FOR_CONCURRENT_GC 淹没,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14093057/