Linux htop显示的驻留内存使用率高于机器的使用率
Linux htop显示的驻留内存使用率高于机器的使用率,linux,memory,htop,Linux,Memory,Htop,htop和top显示的驻留内存消耗比机器上的物理内存消耗更多: htop输出: 最高产量: 自由输出: 这怎么可能呢 编辑1: pmap输出:一个快速的实验表明,fork之后,RES将计算来自父级和子级的内存,即使在实践中,每个页面都将被共享,直到一个进程修改它或死亡 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> int main
htop
和top
显示的驻留内存消耗比机器上的物理内存消耗更多:
htop输出:
最高产量:
自由输出:
这怎么可能呢
编辑1:
pmap输出:一个快速的实验表明,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;
}
#包括
#包括
#包括
#包括
int main()
{
/*100 MiB*/
大小\u t大小=100*1024*1024;
char*ptr=malloc(大小);
内存集(ptr,1,大小);
intpid=fork();
如果(pid==0)
{
出售(“儿童”);
}
其他的
{
认沽权(“母公司”);
}
睡眠(60);
卖出(“再见”);
返回0;
}
如果我运行这个,然后在htop中查看,我会看到两个驻留“100M”的进程。您的进程是否共享内存?因为它可以被计算为两倍。你能附加
pmap 11482
的输出吗?请参考我们做了很多mmap,如果多个线程mmap相同的文件,它们会被计算为共享内存吗?有一些不可访问的映射,例如0000000 71d800000
我不知道top
是否计算错误。同一文件的多个MMAP不计算多次