內存測試:shell
1.使用數據線將手機與電腦鏈接;ide
2.手機打開待測APP,即打開進程;測試
3.打開cmd命令,獲取設備列表:輸入adb devices;spa
4.進入該設備的shell環境,輸入:adb -s 設備ID shell(多個),單個設備的話就直接輸入:adb shell;操作系統
5.查找進程;進程
1)輸入ps(模糊查找),尋找對應待測應用的包名,並記錄其pid內存
2)若知道明確的包名,可直接準確查找 ps | grep 包名get
6.查詢內存信息,可經過兩種方式獲取cmd
1)經過 dumpsys meminfo 包名/pid 獲取;it
Pss Total:實際使用的物理內存;
Private dirty:私有駐留內存;
Heap Size:佔用總內存(Heap堆)(擴展:進程內存空間是虛擬內存,區分於物理內存,進程沒法直接操做物理內存RAM。必要時,操做系統對其進行映射,使進程能應用到物理內存);
Heap Alloc:分配內存;
Heap Free:空閒內存
native process:內存大小
查看單個應用最大內存限制,輸入命令:getprop | grep heapgrowthlimit
2)可直接經過procrank
手機中的sh是通過精簡過的,有些手機可能沒有procrank命令,能夠使用genymotion模擬器,或是本身安裝procrank命令。
VSS—Virtual Set Size(虛擬耗用內存包括共享庫佔用的內存):是單個進程所有可訪問的地址空間。
RSS—Resident Set Size(實際使用物理內存包括共享庫佔用的內存):單個進程實際佔用的內存大小,不是精確描述。
PSS—Proportional Set Size(實際使用的物理內存,比例分配共享庫佔用的內存):對於系統中的總體內存使用是一個很好的描述。
USS—Unique Set Size(進程獨自佔用的物理內存,不包含共享庫佔用的內存):單個進程的所有私有內存大小,即所有被該進程獨佔的內存大小。
通常來講內存佔用的大小有以下規律:VSS>=RSS>=PSS>=USS
USS是針對某個進程開始有可疑內存泄漏的狀況,進行檢測的最佳數字。