我运行以下简单程序
#include <stdio.h>
#include <stdlib.h>
int
main() {
malloc(1024*1024*32);
getchar();
return 0;
}
htop
给出了这个VIRT RES SHR
36684 312 240
pmap -x
给出了这个Address Kbytes RSS Dirty Mode Mapping
0000000000400000 0 4 0 r-x-- a.out
0000000000600000 0 4 4 r---- a.out
0000000000601000 0 4 4 rw--- a.out
00007f063d3b7000 0 4 4 rw--- [ anon ]
00007f063f3b8000 0 228 0 r-x-- libc-2.12.1.so
00007f063f532000 0 0 0 ----- libc-2.12.1.so
00007f063f731000 0 16 16 r---- libc-2.12.1.so
00007f063f735000 0 4 4 rw--- libc-2.12.1.so
00007f063f736000 0 12 12 rw--- [ anon ]
00007f063f73b000 0 108 0 r-x-- ld-2.12.1.so
00007f063f93d000 0 12 12 rw--- [ anon ]
00007f063f958000 0 8 8 rw--- [ anon ]
00007f063f95b000 0 4 4 r---- ld-2.12.1.so
00007f063f95c000 0 4 4 rw--- ld-2.12.1.so
00007f063f95d000 0 4 4 rw--- [ anon ]
00007fff4b298000 0 12 12 rw--- [ stack ]
00007fff4b2d7000 0 4 0 r-x-- [ anon ]
ffffffffff600000 0 0 0 r-x-- [ anon ]
---------------- ------ ------ ------
total kB 36684 432 88
htop
和pmap
显示相同的虚拟大小(36684),但是它们显示的物理内存不同(htop
的RES
= 321和pmap
的RSS
= 432)。也许我有些困惑,但是
htop
的RES
和pmap
的RSS
之间有什么区别吗? 最佳答案
因此,从顶部的手册页中我们可以看到:
对于pmap:
因此,它们似乎是同一回事。但是实际上,如果您还使用ps进行检查,您将看到htop将显示与ps的RSS相同的RES。事情是ps在人中提到显示尺寸有些不同:
这就是ps和pmap之间的区别,而对于htop和pmap来说实际上是相同的。