Lost Ram

AMS-->dumpApplicationMemoryUsage

pw.print(" Lost RAM: ");pw.print(memInfo.getTotalSizeKb()-totalPss-memInfo.getFreeSizeKb() -memInfo.getCachedSizeKb()? ? ? ? ? ? ? ? ? ? ? ? -memInfo.getKernelUsedSizeKb());pw.println(" kB");

LostRAM讓人誤解,以為系統(tǒng)有memoryleak.導(dǎo)致memory丟失.事實上這里的memory統(tǒng)計并不準(zhǔn)確.我們在有的手機上可以看到LostRAM為負(fù)數(shù)或者接近于0.而在有的手機上看到這個值很大.下面我們來分析其lostRAM的來源.

Lost RAM可能來自下面五個方面:

ION.我們知道很多多媒體的應(yīng)用使用ION來分配memory的.大多數(shù)芯片供應(yīng)商是沒有把這部分Memory map到process中,也就沒有統(tǒng)計在cached中.而ION為了分配效率會把這部分用過的memory先cached以便下次使用的時候直接從cache中分配,從而加快了分配速度,提高了系統(tǒng)性能.而當(dāng)系統(tǒng)的memory吃緊時,這部分cached memory會free.這往往是Lost RAM的主要來源.

KGSL. Graphic系統(tǒng)分配的內(nèi)存.這邊分內(nèi)存可能已經(jīng)map到了process中,也有可能沒有map到process中,取決于芯片廠商的實現(xiàn).如果沒有map到process ,這也是Lost RAM的重要來源.

ZRAM中被用掉的部分

多次計算用過的memory,例如filecache ,DSS等.常見的Lost RAM為負(fù)數(shù)就是這個原因.

其它計算不準(zhǔn)備的memory.

事實上我們可以從其它memoryinfo來確定是否有memory leak或其它問題.

adb shell pull /d/ion? your folder?? //可以檢查heaps來確定cached ION memory.

adb shell cat /d/kgsl/proc/*/mem > kgsl_mem.txt //可以用例看每個processgfx所用的memory.

adb shel cat /proc/meminfo 或者 adb shell cat /proc/zoneinfo//獲得更準(zhǔn)確的memoryinfo

adb shell cat /d/shrinker?? //查看可以free的memory大小及其優(yōu)先級.

adb shell cat /sys/class/kgsl/kgsl/page_alloc? //kgsl? /1024/1024 gfx 分配的size

adb shell cat /sys/kernel/debug/ion/heaps/system? //ION? total? /1024/1024

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容