微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么内存使用量超过Linux中的物理RAM?

我正在研究一个具有512MB RAM和足够交换内存的嵌入式系统来支持该应用程序.从内核中,我将内核cmd参数的RAM大小限制为130MB.并使用swapoff -a禁用交换.我还禁用了内核过度使用,因此应用程序可以单独在物理内存中运行.我验证了/ proc / cmdline和/ proc / meminfo的更改.现在,当我运行应用程序并检查顶部值时,我的应用程序的VSZ是177m,这超过了实际的内存!这怎么可能?这个记忆是从哪里来的?

解决方法

VSZ是进程使用的虚拟内存大小.这是正常的,它高于你的物理内存的大小,因为这是其中一个主要的想法.您应该查看Resident size(RSS),它是进程使用的实际物理内存.

看看这个例子:

我有一个运行的Nginx进程:

ps -o RSS,vsz,cmd ax | grep -i Nginx | head -n1
  956  31248 Nginx: master process /usr/sbin/Nginx -c /etc/Nginx/Nginx.conf

RSS - 956 kB
vsz - 31248 kB

因此,这意味着此过程使用956kB的物理内存和31MB的虚拟内存.

与您一样,禁用交换(swapoff -a)不会禁用虚拟内存.

在这里阅读虚拟内存:
Virtual memory

原文地址:https://www.jb51.cc/linux/393234.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐