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不计算多次