Java Can';t launch jstat:无法为对象堆保留足够的空间

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统计数

我有一台旧的Jboss服务器,有5go内存。 我的java应用程序的配置如下:

...-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,它可以正常工作,没有其他好的解决方案:/