VSZ 与 RSS 内存和交换 space

VSZ vs RSS memory and swap space

我正在尝试了解我们正在尝试 运行 的大规模模拟的内存使用情况。当我 运行 它 "ps" 报告

USER    PID %CPU %MEM     VSZ    RSS TTY    STAT START   TIME COMMAND
myuser 5252 97.7  0.5 5751412 377392 ?      Rs   19:49   1:15 myprogram

我们在那个模拟中有三个阵列,每个阵列占用 1.6gb(2 亿双)。根据

中的信息

What is RSS and VSZ in Linux memory management

我以为内存会列在RSS 下,但RSS 只有377MB。根据Whosebug线程中的信息我断定内存必须换出并查看"free -m"

             total       used       free     shared    buffers     cached
Mem:         64391       5985      58406          0        463       1295
-/+ buffers/cache:       4226      60164
Swap:         4766          0       4766

而且swap根本不用!除了它太小的事实之外。那么 RSS 与 VSZ 的差异从何而来?为什么我们分配的数组是 VSZ 的一部分而不是 RSS 的一部分?

感谢所有帮助

对您的问题的简单回答是,数组是在虚拟中定义的 space 这就是为什么只有当您使用数组时,VSZ 中才显示数组的内存,它会成为 RSS 的一部分。 在我看来,保持你的思维简单会给你解释。 VSZ是进程可以使用的虚拟内存,而RSS是此时实际分配的物理内存。当实际使用虚拟内存时,OS 将分配增加 RSS 的内存。