tomcat启动占了12g_tomcat服务为何报内存相关错误??

本帖最后由 linux_love 于 2014-9-19 11:46 编辑

多谢各位英雄支持,这个问题困扰我N久了,昨天终于让我给拿下了,在Linux下有个CommitLimit 用于限制系统应用使用的内存资源,

#grep -i commit /proc/meminfo

CommitLimit:    20389524 kB

Committed_AS:   18541832 kB

其中:

CommitLimit是一个内存分配上限,

Committed_AS是已经分配的内存大小。

当系统中java程序提交的内存+Committed_AS大于CommitLimit,那么java就会报上面的错误。

CommitLimit是有内核参数overcommit_ratio的控制的,

虚拟内存算法:CommitLimit = 物理内存 * overcommit_ratio(默认50,即50%) + swap大小

而我系统中配置的是10,更悲催的是overcommit_memory的值配置的是2,

overcommit_memory参数就是控制分配内存是否可以超过CommitLimit,默认是0,即启发式的overcommitting handle,会尽量减少swap的使用,root可以分配比一般用户略多的内存。1表示允许超过CommitLimit,2表示不允许超过CommitLimit。

所以当我把overcommit_ratio的值调为60的时候,内存基本上就够用了,这个问题就从根本上解决了!

当然我还是将overcommit_memory调为0了,为了避免再次出现这个问题!

参考:http://bkeep.blog.163.com/blog/static/12341429020123795827876/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值