Linux ps命令中内存使用VSZ与RSS的区别

在Linux ps命令中,有两列为我们提供了有关进程使用多少内存的信息 ,它们是VSZ(虚拟内存大小)和RSS(驻留集大小)列。

它们有什么区别?

VSZ 是虚拟内存大小(Virtual Memory Size)。
这是 Linux 分配给进程的内存大小,但这并不一定意味着该进程正在使用所有内存。
例如,许多应用程序具有执行某些任务的功能,但在需要它们之前可能不会将它们加载到内存中。
Linux 利用需求分页,仅在应用程序尝试使用页面时才将页面加载到内存中。

你看到的 VSZ 大小已经考虑了所有这些页面,但这并不意味着它们已经被加载到物理内存中。
因此,VSZ 大小通常不是进程正在使用多少内存的准确度量,而是进程在将其所有函数和库加载到物理内存时可以使用的最大内存量的指示。

RSS 是常驻集大小(Resident Set Size)。
这是进程当前用于加载其所有页面的内存大小。
乍一看,RSS 编号似乎是系统进程正在使用的实际物理内存量。
但是,每个进程都会计算共享库,这使得报告的物理内存使用量不太准确。

这是一个例子。
如果您的 Linux 系统上有两个图像编辑程序,它们可能会使用许多相同的图像处理库。
如果您打开其中一个应用程序,必要的库将被加载到 内存 中。
当您打开第二个应用程序时,它将避免将库的重复副本重新加载到 内存 中,而只是共享第一个应用程序正在使用的相同副本。
对于这两个应用程序,RSS 列会计算共享库的大小,即使它只加载了一次。
这意味着 RSS 大小通常高估了进程实际使用的物理内存量。

日期:2020-07-07 20:56:53 来源:oir作者:oir