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 [在代码之后运行之前] 周一 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为单位。
相关文章:
- 为什么C++总是显示十六进制内存地址,而不仅仅是整数?
- 直接显示手动图形内存泄漏
- 了解 Linux 虚拟内存:valgrind 的 massif 输出显示了有和没有 --pages-as-heap 的主要差异
- C++程序什么都不做,但瓦尔格林德显示内存分配
- Valgrind 在 std::make_unique 中显示内存泄漏
- 无法在 Opencv 中显示图像导致内存位置
- 在 SFML 中不使用动态内存时显示白色纹理代替实际纹理
- Windows API SIZE_T在内存和控制台中不显示相同的值
- free -m 没有显示正确的数据,我使用了 1GB 的持久内存,但它只显示使用了 100kb
- 如何显示在堆上创建的内存的地址
- 在 QML 场景中显示内存中的网格
- Valgrind 在主机名命令输出中显示内存泄漏
- 终端中未显示内存地址(参考)
- 为什么 Go 不显示内存重新排序?
- 可能存在SDL_Net问题和使用 openCV 显示内存中的 YUV 相机帧
- C ++ Valgrind 在 Hello World 中显示内存泄漏
- 尝试使用while循环取消分配向量,任务管理器显示内存使用正在增加
- Kcachegrind显示内存未对齐
- top可能显示内存使用不正确
- Valgrind 在 unittest-cpp 库中显示内存泄漏