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

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

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 [前运行 后代码] 2017 年 7 月 17 日星期一 07:57:13 CDT 缓存的已用空闲共享缓冲区总数 内存:15950 3225 12725 1 263 1076 -/+ buffers/cache: 1885 14065 交换:2047 0 2047

free -m [after before 运行 这些代码] 缓存的已用空闲共享缓冲区总数 内存:15950 2199 13751 1 263 1076 -/+ buffers/cache: 860 15090 交换:2047 0 2047

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

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

谢谢 Vijayky88

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