原创文章,转载请注明: 转载自系统技术非业余研究
本文链接地址: Linux Used内存到底哪里去了?
?
前几天 纯上 同学问了一个问题:
?
我ps aux看到的RSS内存只有不到30M,但是free看到内存却已经使用了7,8G了,已经开始swap了,请问ps aux的实际物理内存统计是不是漏了哪些内存没算?我有什么办法确定free中used的内存都去哪儿了呢?
?
这个问题不止一个同学遇到过了,之前子嘉同学也遇到这个问题,内存的计算总是一个迷糊账。 我们今天来把它算个清楚下!
?
通常我们是这样看内存的剩余情况的:
?
$ free -m
|
???????????? total?????? used?????? free shared???
|
Mem:???????? 48262?????? 7913????? |
-/+ buffers/cache:?????? 7631????? |
Swap:???????? 2047??????? 336?????? |
?
那么这个信息是如何解读的呢,以下这个图解释的挺清楚的!
?
补充(不少人反映图不清晰,请参考:http://www.redbooks.ibm.com/redpapers/pdfs/redp4285.pdf P46-47)
?
上面的情况下我们总的内存有48262M,用掉了7913M。 其中buffer+cache总共14+267=281M, 由于这种类型的内存是可以回收的,虽然我们用掉了7913M,但是实际上我们如果实在需要的话,这部分buffer/cache内存是可以放出来的。
?
我们来演示下:
?
$ sudo sysctl
|
vm.drop_caches = 3 |
$ free -m
|
???????????? total?????? used?????? free shared???
|
Mem:???????
|