2011年8月30日 星期二

[android] 解析 GC_CONCURRENT log 的訊息

解析 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+19msgarbage collection 總共花費了 (7 + 19) ms
(啟動花費時間+結束花費時間)




References:
  1. Filtering Log Out, http://developer.android.com/guide/developing/debugging/debugging-log.html
  2. 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
  3. Patrick Dubroy, "Google I/O 2011: Memory management for Android Apps, " http://www.youtube.com/watch?v=_CruQY55HOk