linux中vsz和rss有什么區別

linux中vsz和rss的區別:1、rss是“Resident Set Size”的縮寫,表示常駐內存大小,而vsz是“Virtual Memory Size”的縮寫,表示虛擬內存大?。?、rss用于表示進程使用了多少內存,并且不包含已經被換出的內存,而vsz包含了進程所能訪問的所有內存,包括了被換出的內存。

linux中vsz和rss有什么區別

本教程操作環境:linux7.3系統、Dell G3電腦。

linux中vsz和rss有什么區別

RSS是Resident Set Size(常駐內存大?。┑目s寫,用于表示進程使用了多少內存(RAM中的物理內存),RSS不包含已經被換出的內存。RSS包含了它所鏈接的動態庫并且被加載到物理內存中的內存。RSS還包含內存和內存。

VSZ是Virtual Memory Size(虛擬內存大?。┑目s寫。它包含了進程所能訪問的所有內存,包含了被換出的內存,被分配但是還沒有被使用的內存,以及動態庫中的內存。

示例如下

假設進程A的二進制文件是500K,并且鏈接了一個2500K的動態庫,堆和棧共使用了200K,其中100K在內存中(剩下的被換出或者不再被使用),一共加載了動態庫中的1000K內容以及二進制文件中的400K內容至內存中,那么:

RSS:?400K?+?1000K?+?100K?=?1500K VSZ:?500K?+?2500K?+?200K?=?3200K

由于部分內存是共享的,被多個進程使用,所以如果將所有進程的RSS值加起來可能會大于系統的內存總量。

申請過的內存如果程序沒有實際使用,則可能不顯示在RSS里。比如說一個程序,預先申請了一大批內存,過了一段時間才使用,你會發現RSS會增長而VSZ保持不變。

還有一個概念是PSS,它是proportional set size(proportional是成比例的意思)的縮寫。這是一種新的度量方式。它將動態庫所使用的內存按比例劃分。比如我們前面例子中的動態庫如果是被兩個進程使用,那么:

PSS:?400K?+?(1000K/2)?+?100K?=?400K?+?500K?+?100K?=?1000K

一個進程中的多個線程共享同樣的地址空間。所以一個進程中的多個線程的RSS,VSZ,PSS是完全相同的。linux下可以使用ps或者top命令查看這些信息。

推薦學習:Linux視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊6 分享