解析 GC_CONCURRENT log 的訊息
Jing (mqJing@gmail.com)
Key word: garbage collection, memory management
如果你想分析你的 android ap 在機器上的記憶體使用量, 你可以輸入下面指令.
adb logcat | grep
下面是 garbage collection 相關的 log 節錄:
DEBUG/dalvikvm(509): GC_CONCURRENT freed 4688K, 23% free 18428K/23751K, external 4703K/5261K, paused 7ms+19ms
快速分析: 直接看百分比, garbage collection 啟動後, 你的 activity 只剩下 23% heap memory 可以使用
細節:
| Item | Description |
| DEBUG/dalvikvm(509): | priority/tag (目前紀錄的 process id) |
| GC_CONCURRENT: | heap 滿了, garbage collection thread 開始啟動 |
| freed 4688K: | garbage collection 總共釋放了 4688K bytes 的空間 |
| 23% free 18428K/23751K | 目前只有 23% heap 空間可使用. (可用空間/heap 大小) |
| external 4703K/5261K | 你的 ap 使用了 4703K bytes 的記憶體不在 vm 的管轄, 全部 native memory 只有 5261K 可使用. |
| paused 7ms+19ms | garbage collection 總共花費了 (7 + 19) ms
(啟動花費時間+結束花費時間) |
References:
- Filtering Log Out, http://developer.android.com/guide/developing/debugging/debugging-log.html
- Reno, “What are the "paused" values in GC_CONCURRENT log messages?, ” http://stackoverflow.com/questions/4525743/what-are-the-paused-values-in-gc-concurrent-log-messages
- Patrick Dubroy, "Google I/O 2011: Memory management for Android Apps, " http://www.youtube.com/watch?v=_CruQY55HOk