內存測試:
1.使用數據線將手機與電腦連接;
2.手機打開待測APP,即打開進程;
3.打開cmd命令,獲取設備列表:輸入adb devices;
4.進入該設備的shell環境,輸入:adb -s 設備ID shell(多個),單個設備的話就直接輸入:adb shell;
5.查找進程;
1)輸入ps(模糊查找),尋找對應待測應用的包名,並記錄其pid
2)若知道明確的包名,可直接准確查找 ps | grep 包名
6.查詢內存信息,可通過兩種方式獲取
1)通過 dumpsys meminfo 包名/pid 獲取;
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是針對某個進程開始有可疑內存泄漏的情況,進行檢測的最佳數字。