# cat /proc/*/status | grep VmSize | awk '{sum += } END {print sum}'281260
但免费说:
# free total used free shared buffers cachedMem: 524288 326488 197800 0 0 0
谁是对的?是使用281260kb内存还是326488kb?
解决方法 标题问:“免费计算使用的内存如何?”答:它询问 *** 作系统, *** 作系统必须跟踪它才能完成它的工作.
更具体地说,它询问内存管理子系统.正如评论中的绵羊模拟器所述,linux内核在/ proc虚拟文件系统中公开了各种 *** 作系统维护的数据,但每个完整的服务 *** 作系统都必须跟踪它们的数据类型,因此免费提供API是一件小事.使用.
问题是:“为什么这与添加报告的所有进程的VmSize不同?”
答:这里至少有事情要发生
> linux将为程序提供内存,而无需实际分配它.当你做char * p = new(1024 * 1024 * 1024 * sizeof(char));内核不会立即让你获得一个千兆字节.如果只是说“OK”,并且数字会在你开始使用时抓住它.因此需要臭名昭着的OOM killer.
>共享动态库,可以将单页实内存映射到多个进程的虚拟地址空间.
此外,您对proc文件系统的传递不是原子的.
结果是,free的输出更准确地反映了在给定时刻在您的机器上使用物理内存.
总结以上是内存溢出为你收集整理的linux – 如何自由计算已用内存?全部内容,希望文章能够帮你解决linux – 如何自由计算已用内存?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)