port 包含 用處 增量 pan 一次 tro 地方 unique

在Linux裏面,一個進程占用的內存有不同種說法,可以是VSS/RSS/PSS/USS四種形式,這四種形式首字母分別是Virtual/Resident/Proportional/Unique的意思。

  • VSS- Virtual Set Size 虛擬耗用內存(包含共享庫占用的內存)

    VSS是單個進程全部可訪問的地址空間,其大小可能包括還尚未在內存中駐留的部分。對於確定單個進程實際內存使用大小,VSS用處不大。

  • RSS- Resident Set Size 實際使用物理內存(包含共享庫占用的內存)

    RSS是單個進程實際占用的內存大小,RSS不太準確的地方在於它包括該進程所使用共享庫全部內存大小。對於一個共享庫,可能被多個進程使用,實際該共享庫只會被裝入內存一次。像libc這種大部頭庫文件,共享者很多,都算在一個進程頭上不科學

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

    PSS相對於RSS計算共享庫內存大小是按比例的。N個進程共享,該庫對PSS大小的貢獻只有1/N。PSS計算更加科學,除了自己獨占的內存,再加上分到的共享部分。

  • USS- Unique Set Size 進程獨自占用的物理內存(不包含共享庫占用的內存)

    USS是單個進程私有的內存大小,即該進程獨占的內存部分。USS揭示了運行一個特定進程在的真實內存增量大小。如果進程終止,USS就是實際被返還給系統的內存大小。USS在計算一個新加入的進程導致系統內存增量很有用處,因為共享部分已經存在,並不是由其導致的。

  綜上,VSS >= RSS >= PSS >= USS

linux內存管理 -- 一個進程占多少內存?四種計算方法:VSS/RSS/PSS/USS