VSZ vs RSS内存和交换空间

fti*_*sem 4 memory ps

我试图了解我们正在尝试运行的大规模模拟的内存使用情况.当我运行它"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
Run Code Online (Sandbox Code Playgroud)

我们在该模拟中有三个阵列,每个阵列占用1.6gb(2亿个双打).根据中的信息

什么是Linux内存管理中的RSS和VSZ

我预计内存将被列在RSS下,但RSS只有377MB.根据stackoverflow线程中的信息,我得出结论,必须换掉内存并查看"free -m"

             total       used       free     shared    buffers     cached
Mem:         64391       5985      58406          0        463       1295
-/+ buffers/cache:       4226      60164
Swap:         4766          0       4766
Run Code Online (Sandbox Code Playgroud)

和交换根本没用!除了它无论如何它太小的事实.那么RSS与VSZ的差异来自哪里呢?为什么我们分配VSZ的一部分而不是RSS的一部分呢?

我感谢所有的帮助

inc*_*ent 6

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