total used free shared buffers cachedMem: 996 907 89 0 76 379-/+ buffers/cache: 451 545Swap: 1023 5 1018
free -m表明,如果没有缓冲区/缓存,系统将使用451 MB的内存.但是,正在运行的程序(主要是Nginx / PHP-fpm / MysqLd / sshd)无法添加到那么多RAM.
ps_mem报告程序目前正在使用90MB,这就是smem所说的:
Area Used Cache Noncachefirmware/harDWare 0 0 0kernel image 0 0 0kernel dynamic memory 820912 775204 45708userspace memory 96300 27988 68312free memory 103168 103168 0---------------------------------------------------------- 1020380 906360 114020
在可见的运行进程之外还有什么东西可以占用我的内存吗?或者是免费的-m错误报告内存使用情况?有关回收此内存的任何提示(无需重新启动)?
cat / proc / meminfo的结果:http://paste.ubuntu.com/6949236/
编辑:原来是一个大的slab缓存,请参阅:http://www.jb51.cc/article/p-aedhdroo-btv.html.我感到困惑的是它比我习惯的要大得多,并且像free -m,htop之类的工具报告这个用作内存而不是比缓存/缓冲区.
解决方法 > free -m是准确的.我不熟悉ps_mem,但怀疑它只报告程序的某些内存使用情况.尝试使用top -a,看看它是否为您提供了更多信息.>内存可能被程序的“资源”空间使用.重新启动它们会清除其中的一部分,但如果它在一小时内没有回到同一个地方,我会感到惊讶.
>你为什么要“回收”这段记忆.你没有RAM. “免费”内存浪费了内存.你最好使用100%,即使只是为了获得最大的性能提升(这就是为什么linux使用它来进行缓存).
>另见: Why is Linux reporting “free” memory strangely?
听起来你对内存利用率的误解与许多人一样.这个Q& A有很好的解释,以及更多信息的链接.但简而言之,除非OOM正在杀死进程,否则让 *** 作系统做到这一点.严肃的,内核程序员为了做到这一点已经投入了大量的时间,除非出现明显的问题,否则我不敢质疑他们的专业知识.
总结以上是内存溢出为你收集整理的linux – 如果它不在缓存/缓冲区中或由进程使用,那么我的RAM在哪里?全部内容,希望文章能够帮你解决linux – 如果它不在缓存/缓冲区中或由进程使用,那么我的RAM在哪里?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)