Linux 應用內存信息分析 VSS/RSS/PSS/USS【轉】

轉自:

在分析Linux內存使用時,不僅需要分析kernel內存使用情況,還需要分析Linux應用的內存使用情況,這就引出了VSS/RSS/PSS/USS
RSS/PSS可以通過cat /proc/PID/smaps節點查看。
1. VSS(Virtual Set Size)
VSS - Virtual Set Size,佔用的虛擬內存的大小(包括共享庫所佔用的內存)

 

 

VSS,是一個進程總共可以訪問的地址空間,其大小還包括了可能不在RAM中的內存(比如雖然malloc分配可空間,但尚未寫入)。VSS很少被用於判斷一個進程的真實內存使用量。
2. RSS(Resident Set Size)
RSS - Resident Set Size,實際上佔用的物理內存的大小(包括共享庫佔用)

 

 

RSS是一個進程在RAM中真實存儲的總內存。但是RSS還是可能會造成誤導,因爲它包括該進程所使用的所有共享庫的大小,而不管共有多少個進程一起使用該共享庫。所以RSS並不能準確反應但進程的內存佔用情況。
3. PSS(Proportional Set Size)
PSS - Proportional Set Size,實際上佔用的物理內存的大小(比例分配共享庫佔用的內存)

 

 

PSS,與RSS不同,它按比例表示使用的共享庫,例如:如果有三個進程都使用了同一個共享庫,共佔用了30頁內存,那麼PSS將認爲每個進程分別佔用該共享庫10頁的大小。PSS是非常有用的數據,因爲系統中所有進程的PSS都相加的話,就剛好反映了系統中的全部內存佔用。而當一個進程被銷燬之後,其佔用的共享庫那部分比例的PSS,將會再次按比例分配給餘下使用該庫的進程。這樣PSS可能會造成一點誤導,因爲當一個進程被銷燬後,PSS不能準確的表示返回給全局系統的內存(the memory returned to the overall system)。
4. USS(Unique Set Size)
USS - Unique Set Size,進程獨自佔用的物理內存(不包括共享庫佔用的內存)

 

 

USS是一個進程所佔用的私有內存,即該進程獨佔的內存。USS是非常有用的數據,因爲它反映了運行一個特定進程真實的邊際成本(增量成本)。當一個進程被銷燬後,USS是真實返回給系統的內存。當進程中存在一個可以的內存泄漏時,USS時最佳觀察數據。
————————————————
版權聲明:本文爲CSDN博主「wdh3837」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_39247141/article/details/126303234

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章