java如何在Android上启用详细GC?
我正在调试一个问题,在这个问题中,由于一些神秘的原因,大量GC正在发生(例如,许多GC\u并发、等待\u并发\u GC和GC\u等待\u ALLOC消息出现在logcat中)。日志中的小样本:
08-13 08:59:12.051 25878-25932/com.myco.myapp D/dalvikvm﹕ GC_FOR_ALLOC freed 393K, 6% free 9740K/10344K, paused 11ms, total 12ms
08-13 08:59:12.067 25878-25882/com.myco.myapp D/dalvikvm﹕ GC_CONCURRENT freed 375K, 6% free 9750K/10344K, paused 3ms+2ms, total 16ms
08-13 08:59:12.067 25878-25932/com.myco.myapp D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 9ms
08-13 08:59:12.082 25878-25932/com.myco.myapp D/dalvikvm﹕ GC_FOR_ALLOC freed 380K, 6% free 9744K/10344K, paused 12ms, total 12ms
08-13 08:59:12.106 25878-25932/com.myco.myapp D/dalvikvm﹕ GC_FOR_ALLOC freed 375K, 6% free 9740K/10344K, paused 19ms, total 19ms
08-13 08:59:12.137 25878-25882/com.myco.myapp D/dalvikvm﹕ GC_CONCURRENT freed 379K, 6% free 9745K/10344K, paused 4ms+3ms, total 23ms
08-13 08:59:12.145 25878-25932/com.myco.myapp D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 20ms
08-13 08:59:12.168 25878-25932/com.myco.myapp D/dalvikvm﹕ GC_FOR_ALLOC freed 369K, 6% free 9743K/10344K, paused 17ms, total 18ms
08-13 08:59:12.192 25878-25932/com.myco.myapp D/dalvikvm﹕ GC_FOR_ALLOC freed 380K, 6% free 9740K/10344K, paused 17ms, total 17ms
08-13 08:59:12.207 25878-25932/com.myco.myapp D/dalvikvm﹕ GC_FOR_ALLOC freed 375K, 6% free 9743K/10344K, paused 11ms, total 11ms
我想知道在这样的卷中创建了哪些对象,GC必须经常运行。我想看看GC过程中销毁了哪些对象
在桌面系统上,我相信在JVM中启用-verbose:gc
就可以了。可以在Android上启用详细GC吗?我怎样才能看到GC正在破坏什么
# 1 楼答案
您可能希望在Android monitor中跟踪分配情况,以了解发生了什么。有关调试应用程序分配的详细信息,请参见https://developer.android.com/tools/debugging/debugging-memory.html
还可以查看这段来自谷歌过去一段关于Android内存管理的I/O视频:https://www.youtube.com/watch?v=_CruQY55HOk