htop显示的驻留内存使用量超过了机器的内存使用量

时间:2016-02-24 07:42:28

标签: linux memory htop

htoptop显示的驻机内存消耗量高于计算机上的物理内存:

htop输出:

htop screenshot

最高输出:

top screenshot

免费输出:

free screenshot

这怎么可能?

编辑1:

pmap输出:https://gist.github.com/ixaxaar/1571308666360f65dc66

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”驻留。