htop
和top
显示的驻机内存消耗量高于计算机上的物理内存:
htop输出:
最高输出:
免费输出:
这怎么可能?
编辑1:
答案 0 :(得分:1)
快速实验表明,在fork之后,RES将计算来自父级和子级的内存,即使实际上每个页面都将被共享,直到一个进程修改它或死亡。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main ()
{
/* 100 MiB */
size_t size = 100 * 1024 * 1024;
char *ptr = malloc (size);
memset (ptr, 1, size);
int pid = fork ();
if (pid == 0)
{
puts ("Child");
}
else
{
puts ("Parent");
}
sleep (60);
puts ("Bye");
return 0;
}
如果我运行它然后查看htop,我看到两个进程“100M”驻留。