tomcat启动占了12g_tomcat服务为何报内存相关错误??
本帖最后由 linux_love 于 2014-9-19 11:46 編輯
多謝各位英雄支持,這個問題困擾我N久了,昨天終于讓我給拿下了,在Linux下有個CommitLimit 用于限制系統(tǒng)應(yīng)用使用的內(nèi)存資源,
#grep -i commit /proc/meminfo
CommitLimit:? ? 20389524 kB
Committed_AS:? ?18541832 kB
其中:
CommitLimit是一個內(nèi)存分配上限,
Committed_AS是已經(jīng)分配的內(nèi)存大小。
當系統(tǒng)中java程序提交的內(nèi)存+Committed_AS大于CommitLimit,那么java就會報上面的錯誤。
CommitLimit是有內(nèi)核參數(shù)overcommit_ratio的控制的,
虛擬內(nèi)存算法:CommitLimit = 物理內(nèi)存 * overcommit_ratio(默認50,即50%) + swap大小
而我系統(tǒng)中配置的是10,更悲催的是overcommit_memory的值配置的是2,
overcommit_memory參數(shù)就是控制分配內(nèi)存是否可以超過CommitLimit,默認是0,即啟發(fā)式的overcommitting handle,會盡量減少swap的使用,root可以分配比一般用戶略多的內(nèi)存。1表示允許超過CommitLimit,2表示不允許超過CommitLimit。
所以當我把overcommit_ratio的值調(diào)為60的時候,內(nèi)存基本上就夠用了,這個問題就從根本上解決了!
當然我還是將overcommit_memory調(diào)為0了,為了避免再次出現(xiàn)這個問題!
參考:http://bkeep.blog.163.com/blog/static/12341429020123795827876/
總結(jié)
以上是生活随笔為你收集整理的tomcat启动占了12g_tomcat服务为何报内存相关错误??的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络学习笔记(七)——传输层、TC
- 下一篇: maven 打包指定依赖包_Maven打