linux – java程序在到达xmx之前内存不足

linux – java程序在到达xmx之前内存不足,第1张

概述在Redhat上,CentOS 6.4只运行了几个进程,使用大约3GB RAM(系统有12GB可用).其中一个进程是WSO2ESB服务器( java),我们用这些参数启动它: -Xms2048m -Xmx3072m 过了一会儿我们得到一个OutOfMemory异常,但java进程(WSO2ESB)进程甚至没有使用它的3GB.在jconsole中你还可以看到那些参数设置正确(此时Linux Serv 在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.
我不得不提高用户的限制,现在一切正常.

为此:
打开/etc/security/limits.conf并为您的用户添加以下两行:

myuser             soft    nproc           8192myuser             hard    nproc           8192
总结

以上是内存溢出为你收集整理的linux – java程序到达xmx之前内存不足全部内容,希望文章能够帮你解决linux – java程序在到达xmx之前内存不足所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1036289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存