日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android中垃圾回收日志信息

發(fā)布時間:2024/4/14 Android 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android中垃圾回收日志信息 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原因

GC_CONCURRENTfreed 178K, 41% free 3673K/6151K, external 0K/0K, paused 2ms+2ms
GC_EXPLICITfreed 6K, 41% free 3667K/6151K, external 0K/0K, paused 29ms

紅顏色標(biāo)出的部分就是垃圾回收觸發(fā)的原因。在Android中有五種類型的垃圾回收觸發(fā)原因。

  • GC_CONCURRENT當(dāng)堆內(nèi)存增長到一定程度時會觸發(fā)。此時觸發(fā)可以對堆中的沒有用的對象及時進(jìn)行回收,騰出空間供新的對象申請,避免進(jìn)行不必要的增大堆內(nèi)存的操作。
  • GC_EXPLICIT當(dāng)程序中調(diào)用System.gc()方法觸發(fā)。這個方法應(yīng)避免出現(xiàn)在程序中調(diào)用。因?yàn)镴VM有足夠的能力來控制垃圾回收。
  • GC_EXTERNAL_MALLOC當(dāng)Bitmap和NIO Direct ByteBuffer對象分配外部存儲(機(jī)器內(nèi)存,非Dalvik堆內(nèi)存)觸發(fā)。這個日志只有在2.3之前存在,從2.3系統(tǒng)開始,垃圾回收進(jìn)行了調(diào)整,前面的對象都會存儲到Dalivik堆內(nèi)存中。所以在2.3系統(tǒng)之后,你就再也不會看到這種信息了。
  • GC_FOR_MALLOC當(dāng)堆內(nèi)存已滿,系統(tǒng)需要更多內(nèi)存的時候觸發(fā)。這條日志出現(xiàn)后意味著JVM要暫停你的程序進(jìn)行垃圾回收操作。
  • GC_HPROF_DUMP_HEAP當(dāng)創(chuàng)建一個內(nèi)存分析文件HPROF時觸發(fā)。

結(jié)果

GC_CONCURRENTfreed 178K, 41% free 3673K/6151K, external 0K/0K, paused 2ms+2ms
GC_EXPLICITfreed 6K, 41% free 3667K/6151K, external 0K/0K, paused 29ms

這部分?jǐn)?shù)據(jù)告訴我們JVM進(jìn)行垃圾回收釋放了多少空間。

堆內(nèi)存數(shù)據(jù)

GC_CONCURRENT freed 178K,41% free 3673K/6151K, external 0K/0K, paused 2ms+2ms
GC_EXPLICIT freed 6K,41% free 3667K/6151K, external 0K/0K, paused 29ms

這部分告訴我們堆內(nèi)存中可用內(nèi)存占的比例,當(dāng)前活躍的對象總的空間,以及當(dāng)前堆的總大小。所以這里的數(shù)據(jù)就是41%的堆內(nèi)存可用,已經(jīng)使用了3673K,總的堆內(nèi)存大小為6151K。

外部存儲數(shù)據(jù)

GC_EXTERNAL_ALLOC freed 1125K, 47% free 6310K/11847K,external 1051K/1103K, paused 46ms
GC_EXTERNAL_ALLOC freed 295K, 47% free 6335K/11847K,external 1613K/1651K, paused 41ms

這部分?jǐn)?shù)據(jù)告訴我們外部存儲(位于機(jī)器內(nèi)存)對象的數(shù)據(jù)。在2.3之前,bitmap對象存放在機(jī)器內(nèi)存。因此在第一條數(shù)據(jù)中我們可以看到以有1051K使用,外部存儲為1103K。

上面兩行數(shù)據(jù)相差100毫秒,我們可以看到第一條數(shù)據(jù)表明外部存儲快滿了,由于GC_EXTERNAL_ALLOC被觸發(fā),外部存儲空間擴(kuò)大到了1651K。

垃圾回收暫停時間

GC_CONCURRENT freed 178K, 41% free 3673K/6151K, external 0K/0K,paused 2ms+2ms
GC_EXPLICIT freed 6K, 41% free 3667K/6151K, external 0K/0K,paused 29ms

這部分?jǐn)?shù)據(jù)表明垃圾回收消耗的時間。在GC_CONCURRENT回收時,你會發(fā)現(xiàn)兩個暫停時間。一個是在回收開始的暫停時間,另一個時在回收結(jié)束的暫停時間。GC_CONCURRENT從2.3開始引入,相比之前的程序全部暫停的垃圾回收機(jī)制,它的暫停時間要小的多。一般少于5毫秒。因?yàn)镚C_CONCURRENT的絕大多數(shù)操作在一個單獨(dú)的線程中進(jìn)行。

總結(jié)

以上是生活随笔為你收集整理的Android中垃圾回收日志信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。