linux – java程序在到达xmx之前内存不足
发布时间:2020-12-14 02:53:06 所属栏目:Linux 来源:网络整理
导读:在Redhat上,CentOS 6.4只运行了几个进程,使用大约3GB RAM(系统有12GB可用).其中一个进程是WSO2ESB服务器( java),我们用这些参数启动它: -Xms2048m -Xmx3072m 过了一会儿我们得到一个OutOfMemory异常,但java进程(WSO2ESB)进程甚至没有使用它的3GB.在jconsole
在Redhat上,CentOS 6.4只运行了几个进程,使用大约3GB RAM(系统有12GB可用).其中一个进程是WSO2ESB服务器(
java),我们用这些参数启动它:
-Xms2048m -Xmx3072m 过了一会儿我们得到一个OutOfMemory异常,但java进程(WSO2ESB)进程甚至没有使用它的3GB.在jconsole中你还可以看到那些参数设置正确(此时Linux Server有大约9GB的可用RAM) Linux没有给我们配置3 GByte RAM吗? 在完全相同的Windows安装上 – java进程可以使用它的3GB Ram而没有任何问题. jconsole的屏幕截图,显示堆内存使用量仅在0.3到1.0 GB之间.在OutOfMemory异常时刻堆内存为0.5GB,但是这个过程有3GB可以使用,但它没有…… 编辑:添加了java进程的日志: java.lang.OutOfMemoryError: unable to create new native thread EDIT2:添加了free -m输出: 解决方法
我解决了这个问题.
wso2esb使用了超过1000个线程.但是在Linux上,用户可以使用的默认线程数设置为1024. 我不得不提高用户的限制,现在一切正常. 为此: myuser soft nproc 8192 myuser hard nproc 8192 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |