作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
htop
和 top
显示比机器上存在的物理内存更多的常驻内存消耗:
htop 输出:
顶级输出:
自由输出:
这怎么可能?
编辑 1:
pmap 输出:https://gist.github.com/ixaxaar/1571308666360f65dc66
最佳答案
一个快速实验表明,在 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”的进程。
关于linux - htop 显示的常驻内存使用量多于机器的内存使用量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35596093/
我是一名优秀的程序员,十分优秀!