1

我正在编写一个小型 android 游戏,每当我第一次运行时,一切正常,但它会随机挂起并开始在 eclipse 的 LogCat 中无休止地发送垃圾邮件

12-30 12:40:05.344: D/dalvikvm(22831): WAIT_FOR_CONCURRENT_GC 阻塞 5ms 12-30 12:40:05.383: D/dalvikvm(22831): GC_CONCURRENT 释放 511K,34% 空闲 2374K/3552K,暂停 1ms+2ms , 总共 14ms

我知道它与垃圾收集有关,但是每当我强制停止应用程序(关闭它的唯一方法)时,我会丢失大约 5-10mb 的可用内存,直到我重新启动设备。有谁知道这意味着什么以及如何预防?

我正在使用的设备是运行 android 4.2.1(Cyanogenmod 10.1)和 3.2(api 级别 13)的 sdk/target 版本的 verizon Galaxy nexus。谢谢!

4

2 回答 2

0

不确定这是否正是您要查找的内容,但这是我搜索您的错误时的第一件事 - WAIT_FOR_CONCURRENT_GC 被阻止是什么意思?. 此外,几乎没有理由针对3.2

于 2012-12-30T17:56:05.177 回答
0

你可以用谷歌搜索到更详细的描述,但基本上这只是意味着你让垃圾收集器非常努力地工作。

编写游戏与编写“普通”应用程序不同:您的游戏可能会循环无数次。因此,即使是很小的内存泄漏也会迅速发展为真正的问题。

此外,GC 通常是你最大的朋友,在游戏中它几乎是你的敌人之一。每次 GC 运行都会产生一点冻结,因为它“停止了世界”。

我建议您继续搜索特定的游戏编程教程以及如何在这些教程中处理 GC。

于 2012-12-30T18:04:29.313 回答