为什么top中的VSIZE的值与ps中的VSZ(Virtual set size)的值不同?

为什么top中的VSIZE的值与ps中的VSZ(Virtual set size)的值不同?

我知道 VSZ inps是为应用程序分配的总地址空间,有时别名为 vsize (在pslinux 的手册页中提到),但是 中 VSIZE 的定义是什么top? iPhone 的顶部输出与 Linux 上的顶部输出不同:

 PID COMMAND      %CPU   TIME   #TH #PRTS #MREGS  RPRVT  RSHRD  RSIZE  VSIZE
 1875 emma         0.0%  0:30.83   7   139    932 17868K  5328K    29M   181M

root# ps -eo pid,rss,vsz|grep 1875
 1875  29324   441324

答案1

Linux 内存系统充满了许多内存优化实用程序和内存共享的例程,使得内存如何共享和消耗的想法成为一种麻烦的方法。 ps 和其他 ps 相关命令的输出都根据数据来处理其输出在文件系统下/proc。特别是ps,RSS(驻留内存大小)和VSIZE(虚拟内存大小)都很重要,但是VSIZE并不能显示内存的准确使用情况,VSIZE和rss之间的区别是初始化期间实际打算分配给程序的内存大小但可能还没有被引用。就像程序可能有很多链接的库但它们还没有加载,因为它们在实际的程序运行时还没有被引用。 RSS 给出了程序实际使用的总内存,但可能无法给出内存消耗的真实情况,因为分配的大部分内存可能与同一进程的其他实例或其他进程共享。往下看/proc/<processid>/maps可能会粗略地了解内存的使用情况,但有时它们可​​能会产生误导。从命令行使用pmap -x <pid>,对于查看传播很有用。

通常更好的实用程序是freevmstatfree将为您提供当前总体内存消耗详细信息,并且 vmstat 可用于查看更新频率。

相关内容