內(nèi)存的方式和cpu類似搔啊,我們通過多次采集螃成,得出內(nèi)存值摄狱,看內(nèi)存是否異常胖腾。
如何獲取內(nèi)存值
1.adb shell dumpsys meminfo
2.adb shell dumpsys meminfo PID
3. adb shell dumpsys meminfo <packageName>
重點(diǎn)關(guān)注如下幾個(gè)字段:
(1) Native/Dalvik 的 Heap 信息
具體在上面的第一行和第二行,它分別給出的是JNI層和Java層的內(nèi)存分配情況幕袱,如果發(fā)現(xiàn)這個(gè)值一直增長暴备,則代表程序可能出現(xiàn)了內(nèi)存泄漏。
(2) Total 的 PSS 信息
這個(gè)值就是你的應(yīng)用真正占據(jù)的內(nèi)存大小们豌,通過這個(gè)信息涯捻,你可以輕松判別手機(jī)中哪些程序占內(nèi)存比較大了。
Heap size 是實(shí)際用到的內(nèi)存 ? ? ? Heap alloc :是實(shí)際分配的值
alloc<size(進(jìn)程使用的是虛擬內(nèi)存望迎,虛擬內(nèi)存使用遠(yuǎn)大于物理內(nèi)存)
表示內(nèi)存的耗用情況有四種不同的表現(xiàn)形式
VSS - Virtual Set Size 虛擬耗用內(nèi)存(包含共享庫占用的內(nèi)存)
RSS - Resident Set Size 實(shí)際使用物理內(nèi)存(包含共享庫占用的內(nèi)存)
PSS - Proportional Set Size 實(shí)際使用的物理內(nèi)存(比例分配共享庫占用的內(nèi)存)
USS - Unique Set Size 進(jìn)程獨(dú)自占用的物理內(nèi)存(不包含共享庫占用的內(nèi)存)
VSS:VSS表示一個(gè)進(jìn)程可訪問的全部內(nèi)存地址空間的大小障癌。這個(gè)大小包括了進(jìn)程已經(jīng)申請但尚未使用的內(nèi)存空間。在實(shí)際中很少用這種方式來表示進(jìn)程占用內(nèi)存的情況辩尊,用它來表示單個(gè)進(jìn)程的內(nèi)存使用情況是不準(zhǔn)確的混弥。
RSS:表示一個(gè)進(jìn)程在RAM中實(shí)際使用的空間地址大小,包括了全部共享庫占用的內(nèi)存对省,這種表示進(jìn)程占用內(nèi)存的情況也是不準(zhǔn)確的。
PSS:表示一個(gè)進(jìn)程在RAM中實(shí)際使用的空間地址大小晾捏,它按比例包含了共享庫占用的內(nèi)存蒿涎。假如有3個(gè)進(jìn)程使用同一個(gè)共享庫,那么每個(gè)進(jìn)程的PSS就包括了1/3大小的共享庫內(nèi)存惦辛。這種方式表示進(jìn)程的內(nèi)存使用情況較準(zhǔn)確劳秋,但當(dāng)只有一個(gè)進(jìn)程使用共享庫時(shí),其情況和RSS一模一樣胖齐。
USS:表示一個(gè)進(jìn)程本身占用的內(nèi)存空間大小玻淑,不包含其它任何成分,這是表示進(jìn)程內(nèi)存大小的最好方式呀伙!
VSS>=RSS>=PSS>=USS