如您所见,提交的内存量逐渐增加,导致交换文件被使用.令我感到奇怪的是,非活动内存的数量也在不断增长.我的理解是,非活动内存实际上已释放内存但尚未被 *** 作系统清理并放回到空闲内存池中.似乎缺乏清理工作导致内存耗尽,但我可能错了.
您能否提供一些提示,找出问题的原因和/或使CentOS回收非活动内存?
谢谢.
一些额外的信息:
1)我在/ tmp上安装了一个tmpfs,并且存储的文件数量增加(但它是非活动内存量的两倍).
2)cat / proc / meminfo(在比图像更晚的阶段)给出:
MemTotal: 14371428 kBMemFree: 1207108 kBBuffers: 35440 kBCached: 4276628 kBSwapCached: 785316 kBActive: 9038924 kBInactive: 3902876 kBHighTotal: 0 kBHighFree: 0 kBLowTotal: 14371428 kBLowFree: 1207108 kBSwapTotal: 10223608 kBSwapFree: 6438320 kBDirty: 627792 kBWriteback: 0 kBAnonPages: 7844560 kBMapped: 49304 kBSlab: 146676 kBPagetables: 27480 kBNFS_Unstable: 0 kBBounce: 0 kBCommitlimit: 17409320 kBCommitted_AS: 16471488 kBVmallocTotal: 34359738367 kBVmallocUsed: 275852 kBVmallocChunk: 34359462007 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0Hugepagesize: 2048 kB
3)该应用程序是MysqL,Heritrix(http://crawler.archive.org/)和基于Tomcat的Java servlet的组合,用于管理事物.
解决方法It is my understanding that the inactive memory is actually memory
freed up but not yet clean by the OS and put back in the free memory
pool.
这是错误的. “非活动”内存是主动映射的内存,一段时间内任何应用程序都没有使用它.当它的时间交换时,内存取自标记为这样的页面并换出.它也可以用于换出以支持页面缓存.
As you can see the amount of committed memory increases gradually
causing the swap file to be use. What strikes me odd is that the
amount of inactive memory keeps growing as well.
两者不一定相关,但对我来说,这看起来好像有什么东西在泄漏记忆.事实上,任何应用程序都没有访问页面,并且交换增长也表明有些事情是分配内存,忘记它然后不释放它.
内存可能是“非活动的”,例如,如果调用malloc().这是一个可以分配一块内存的libc调用,但实际上只有一部分用于执行任何工作(少于分配的页数).即使你在malloc中释放它并不意味着你通过要求 *** 作系统这样做来释放内存,它只是mallocs表可能标记为“可重用”,它可能会释放它.
总结以上是内存溢出为你收集整理的linux – 什么可以导致非活动内存增加以及如何回收它?全部内容,希望文章能够帮你解决linux – 什么可以导致非活动内存增加以及如何回收它?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)