android log 日誌分析 來自 Google I/O 2011: Memory man...

常常看到一堆這樣的日誌. html

D/dalvikvm( 9050): GC_CONCURRENT freed 2049K, 65% free 3571K/9991K, external 4703K/5261K, paused 2ms 2ms android

在調優app性能的時候須要查看日誌.android日誌分幾種類型: app

- GC_CONCURRENT:這是由於你的heap內存佔用開始往上漲了,爲了不heap內存滿了而觸發執行的。
- GC_FOR_MALLOC:這是因爲concurrent gc沒有及時執行完而你的應用又須要分配更多的內存,內存要滿了,這個時候不得不停下來進行malloc gc。
- GC_EXTERNAL_ALLOC:這是爲external分配的內存執行的GC,也就是上文提到的Bitmap Pixel Data之類的。
- GC_HPROF_DUMP_HEAP:這是當你作HPROF這樣一個操做去建立一個HPROF profile的時候執行的。
- GC_EXPLICIT:這是因爲你顯式的調用了System.gc(),這是不提倡的,通常來講咱們能夠信任系統的GC。 性能

freed 2049K代表在此次GC中回收了多少內存。
65% free 3571K/9991K是heap的一些統計數據,代表此次回收後65%的heap可用,存活的對象大小3571K,heap大小是9991K。
external 4703K/5261K是Native Memory的數據。放Bitmap Pixel Data或者是NIO Direct Buffer之類的。第一個數字代表Native Memory中已分配了多少內存,第二個值有點相似一個浮動的閥值,代表分配內存達到這個值系統就會觸發一次GC進行內存回收。
paused 2ms 2ms代表GC暫停的時間。從這裏你能夠看到越大的heap size你須要暫停的時間越長。若是是concurrent gc你會看到2個時間一個開始一個結束,這時間是很短的,但若是是其餘類型的GC,你極可能只會看到一個時間,而這個時間是相對比較長的。 spa

 Google I/O 2011: Memory management for Android Apps  翻譯

翻譯鏈接 http://my.eoe.cn/futurexiong/archive/1299.html 日誌

相關文章
相關標籤/搜索