linux – 如何自由计算已用内存?

linux – 如何自由计算已用内存?,第1张

概述如何自由计算已用内存,为什么它与/ proc报告有什么不同? # cat /proc/*/status | grep VmSize | awk '{sum += $2} END {print sum}'281260 但免费说: # free total used free shared buffers cachedMem: 如何自由计算已用内存,为什么它与/ proc报告有什么不同?

# 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 – 如何自由计算已用内存?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1021848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存