free -m 没有显示正确的数据,我使用了 1GB 的持久内存,但它只显示使用了 100kb

free -m is not showing correct data, i used persistent memory 1GB but it is showing only 100kb used

本文关键字:显示 内存 100kb 1GB 数据 free      更新时间:2023-10-16
long long size = (long long)1*1024*1024*1024;
char *p =NULL;
while (p==NULL)
{
/* mmap 100MiB of shared anonymous memory */
p = malloc(size);
if(!p)
{
printf("nallocation failed for size %ld",size);
size = size/2;
}
else
{
printf("nallocation passed for size %ld",size);
break;
}
}
if(p)
{
printf("n making persinstant these allocated memory,%p",p);
/* Touch every single page to make them resident */
for (i = 0; i < size / 4096; i++)
{
printf ("n%d",i);
p[i * 4096] = 1;
}
sleep(600) // sleep 10 min and analyze the memory used data
}

free -m [在代码之后运行之前] 周一 7月 17 07:57:13 CDT 2017 缓存的可用共享缓冲区已用总数 内存: 15950 3225 12725 1 263 1076 -/+ 缓冲区/缓存:1885 14065 交换: 2047 0 2047

free -m [在运行这些代码之前之后] 缓存的可用共享缓冲区已用总数 内存: 15950 2199 13751 1 263 1076 -/+ 缓冲区/缓存:860 15090 交换: 2047 0 2047

因此,如果我们看到我写入了 1GB 数据(第一次分配成功(,而 free -m 显示仅使用了 1000KB。

有人可以帮助我填补这个空白吗? 如何验证代码的确切 RAM 使用情况。

谢谢 维杰基88

这种差异之所以存在,是因为我的系统为free -m和free -k提供了相同的输出,实际上它以mb为单位。