APP性能指標之內存篇


1.測試app內存占用的方法:

adb shell dumpsys meminfo <包名>or pid

2.原理說明

對於一個app,我們可以關注它在3種狀態下的內存占用情況:

空負荷————app已經在后台運行,但是用戶沒有使用;

中負荷————app在前台運行,用戶進行了少量操作;

滿負荷————用戶持續頻繁大量操作,app接近飽和狀態運行。

然而,除了第一種情況,其它兩種的主觀性很強,不是很容易區分。正常產品測試的時候,只要驗證后台運行(5~10分鍾為宜)和用戶持續頻繁大量操作(10~15分鍾為宜)這兩種情況下就可以了。

內存分為PSS、RSS、VSS、USS

VSS - Virtual Set Size 虛擬耗用內存(包含共享庫占用的內存)是單個進程全部可訪問的地址空間

(VSS:VSS表示一個進程可訪問的全部內存地址空間的大小。這個大小包括了進程已經申請但尚未使用的內存空間。在實際中很少用這種方式來表示進程占用內存的情況,用它來表示單個進程的內存使用情況是不准確的。)

RSS - Resident Set Size 實際使用物理內存(包含共享庫占用的內存)是單個進程實際占用的內存大小,對於單個共享庫, 盡管無論多少個進程使用,實際該共享庫只會被裝入內存一次。

(RSS:表示一個進程在RAM中實際使用的空間地址大小,包括了全部共享庫占用的內存,這種表示進程占用內存的情況也是不准確的。)

PSS - Proportional Set Size 實際使用的物理內存(比例分配共享庫占用的內存)

(PSS:表示一個進程在RAM中實際使用的空間地址大小,它按比例包含了共享庫占用的內存。假如有3個進程使用同一個共享庫,那么每個進程的PSS就包括了1/3大小的共享庫內存。這種方式表示進程的內存使用情況較准確,但當只有一個進程使用共享庫時,其情況和RSS一模一樣。)
USS - Unique Set Size 進程獨自占用的物理內存(不包含共享庫占用的內存)USS 是一個非常非常有用的數字, 因為它揭示了運行一個特定進程的真實的內存增量大小。如果進程被終止, USS 就是實際被返還給系統的內存大小。

(USS:表示一個進程本身占用的內存空間大小,不包含其它任何成分,這是表示進程內存大小的最好方式!)
可以看到:VSS>=RSS>=PSS>=USS
USS 是針對某個進程開始有可疑內存泄露的情況,進行檢測的最佳數字。懷疑某個程序有內存泄露可以查看這個值是否一直有增加

我們一般觀察Uss來反映一個進程的內存使用情況,Uss 的大小代表了只屬於本進程正在使用的內存大小,這些內存在此進程被殺掉之后,會被完整的回收掉。

     USS是一個非常有用的數字,因為它揭示了運行一個特定進程的真實的內存增量大小,如果進程被終止,USS就是實際被返還給系統的內存大小。USS 是針對某個進程開始有可疑內存泄露的情況,進行檢測的最佳數字。

   懷疑某個程序有內存泄露可以查看USS值是否一直有增加。

 





原文:https://blog.csdn.net/u012613604/article/details/73294120 

原文:https://blog.csdn.net/bigconvience/article/details/35553983 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM