由于神秘的原因,我正在调试发生大量GC的问题(即许多GC_CONCURRENT,WAIT_FOR_CONCURRENT_GC和GC_FOR_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正在摧毁什么?
答案 0 :(得分:1)
您可能希望在Android监视器中跟踪分配以查看正在进行的操作。有关调试应用分配的详细信息,请参阅https://developer.android.com/tools/debugging/debugging-memory.html。
另请查看过去关于Android内存管理的Google I / O的视频:https://www.youtube.com/watch?v=_CruQY55HOk