linux – 如何自由计算已用内存?
发布时间:2020-12-14 00:02:35 所属栏目:Linux 来源:网络整理
导读:如何自由计算已用内存,为什么它与/ proc报告有什么不同? # cat /proc/*/status | grep VmSize | awk '{sum += $2} END {print sum}'281260 但免费说: # free total used free shared buffers cachedMem: 524288 326488 197800 0 0 0 谁是对的?是使用28126
如何自由计算已用内存,为什么它与/ proc报告有什么不同?
# cat /proc/*/status | grep VmSize | awk '{sum += $2} END {print sum}' 281260 但免费说: # free total used free shared buffers cached Mem: 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的输出更准确地反映了在给定时刻在您的机器上使用物理内存. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |