Java Can';t launch jstat:无法为对象堆保留足够的空间
我有一台旧的Jboss服务器,有5go内存。 我的java应用程序的配置如下:Java Can';t launch jstat:无法为对象堆保留足够的空间,java,jboss,heap-memory,jstat,Java,Jboss,Heap Memory,Jstat,我有一台旧的Jboss服务器,有5go内存。 我的java应用程序的配置如下: ...-server -Xms3200m -Xmx3500m -XX:MaxPermSize=512M... 当我尝试关闭时,它使用与启动相同的JAVA_选项,因此失败。 因此,我修改了shutdown.sh脚本,并添加: ... JAVA_OPTS='-Xms128m -Xmx128m -XX:MaxPermSize=128m' export JAVA_OPTS ... 一切正常。 但是现在,是我的JMX统计数
...-server -Xms3200m -Xmx3500m -XX:MaxPermSize=512M...
当我尝试关闭时,它使用与启动相同的JAVA_选项,因此失败。
因此,我修改了shutdown.sh脚本,并添加:
...
JAVA_OPTS='-Xms128m -Xmx128m -XX:MaxPermSize=128m'
export JAVA_OPTS
...
一切正常。
但是现在,是我的JMX统计数据不再起作用了,我假设他们使用jstat来测量空闲堆
当我做一个测试时:
./jstat -gccapacity PID
我要传达的信息是:
Could not reserve enough space for object heap
但我现在在服务器上有1go的可用内存!
什么JAVA_选择jstat使用work?我使用的大多数JAVA实现都使用默认的最大堆大小,即系统内存的25%,并且您的系统可能不允许过度使用内存,因此这可能会导致此问题。(来源:) 我希望这有助于解决问题: 对于jstat,可以设置-Xmx,但需要在前面加上-J,如下所示: jstat-gccapacity$YOUR_JBOSS_PID-J-Xmx10m-J-Xms10m-J-XX:+PrintFlagsFinal PrintFlagsFinal将向您显示JVM将开始的有效设置,查找-Xmx或等效值设置的有效值:MaxHeapSize:-XX:MaxHeapSize=128m 资料来源: 让我知道它有帮助(如果没有,请提供一些详细信息,如:
java-version
和uname-a
)
有关更多信息和/或选项,请参见:是的,我也为这个解决方案提供资金,但修改所有监视JVM的nagios脚本以添加Xmx选项是一件痛苦的事情。因此,我在服务器上添加了1go的RAM,它可以正常工作,没有其他好的解决方案:/