通常來講內存佔用大小有以下規律:VSS>=RSS>=PSS>=USSide
虛擬耗用內存(包含共享庫佔用的所有內存,以及分配但未使用的內存)。其大小還包括了可能不在RAM中的內存(好比malloc分配了空間,但還沒有寫入)。VSS不多被用於判斷一個進程的真實內存使用量。blog
實際使用物理內存(包含共享庫佔用的所有內存)。可是RSS仍是可能會形成誤導,由於它僅僅表示該進程所使用的全部共享庫的大小,它無論有多少個進程使用該共享庫,該共享庫僅被加載到內存一次。因此RSS並不能準確反映單進程的內存佔用狀況。進程
實際使用的物理內存(比例分配共享庫佔用的內存,按照進程數等比例劃分)。例如,若是有三個進程都使用了一個共享庫,共佔用三十頁內存。那麼PSS將認爲每一個進程分別佔用改共享庫十頁的大小。PSS是很是有用的數據,由於系統中全部進程的PSS相加的話,就恰好反映了系統中的總共佔用的內存。而當一個進程別銷燬以後,其佔用的共享庫那部分比例的PSS,將會再次按比例分配給餘下使用該庫的進程。這樣PSS可能會形成一些誤導,由於當一個進程銷燬的後,PSS不能準確的表示返回給全局系統的內存。內存
進程獨自佔用的物理內存(不包含共享庫佔用的內存)。USS是很是有用的數據,由於它反映了運行一個特定進程真實的邊際成本(增量成本)。當一個進程被銷燬後,USS是真實返回給系統的內存。當進程中存在一個可疑的內存泄漏時,USS是最佳觀察數據。it