等待并发GC阻止

mel*_*lib 14 eclipse android garbage-collection

当我在模拟器上运行我的应用程序时,Logcat显示:

04-22 16:21:30.685: D/dalvikvm(967): GC_CONCURRENT freed 1545K, 20% free 7019K/8720K, paused 78ms+17ms, total 360ms

04-22 16:21:30.685: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 143ms
04-22 16:21:31.845: D/dalvikvm(967): GC_CONCURRENT freed 1552K, 20% free 7019K/8720K, paused 116ms+18ms, total 554ms

04-22 16:21:31.845: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 268ms
04-22 16:21:32.435: D/dalvikvm(967): GC_CONCURRENT freed 1545K, 20% free 7019K/8720K, paused 75ms+9ms, total 192ms

04-22 16:21:32.435: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 73ms
04-22 16:21:32.945: D/dalvikvm(967): GC_CONCURRENT freed 1552K, 20% free 7019K/8720K, paused 75ms+10ms, total 209ms

04-22 16:21:32.945: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 70ms
04-22 16:21:33.434: D/dalvikvm(967): GC_CONCURRENT freed 1545K, 20% free 7019K/8720K, paused 78ms+12ms, total 192ms
Run Code Online (Sandbox Code Playgroud)

这一直持续到我退出应用程序.任何建议?谢谢

lux*_*xer 8

好像你正在创造许多新物品并很快扔掉它们.

对于WAIT_FOR_CONCURRENT_GC,请参阅以下内容: WAIT_FOR_CONCURRENT_GC阻止是什么意思?

这意味着您尝试分配内存(例如,对象创建)并且它不适合内存.这就是GC_CONCURRENT释放的原因.它只是通常的垃圾收集.

如果您遇到性能问题,请尝试重用对象或备用它们.


Sun*_*tya 5

这意味着您正在执行太多操作并且正在使用大量内存。因此,正在调用 GC(垃圾收集器)以释放内存。

04-22 16:21:30.685:D/dalvikvm(967):GC_CONCURRENT释放1545K,20%释放7019K/8720K,暂停78ms+17ms,共360ms

freed 表示释放了多少内存

GC_CONCURRENT 当堆变得太大以防止溢出时调用。

paused 78ms+17ms – 表示 GC 完成收集所用的时间。

参考

另外进行内存转储并使用 MAT 工具分析转储。