JBoss6无法在带有JDK 7的Windows(32位)机器上启动

JBoss不会以我当前的配置开始。 我收到错误:

VM初始化期间发生错误无法为对象堆预留足够的空间错误:无法创建Java虚拟机。 错误:发生致命异常。 程序将会退出。 按任意键继续 。 。 。

JBoss使用的JAVA_OPTS是:

-client 
-Dprogram.name=standalone.bat 
-Xms128 
-Xmx2G 
-XX:MaxPermSize=256M 
-Djava.net.preferIPv4Stack=true 
-Djboss.modules.system.pkgs=org.jboss.byteman 
-Xms1024m 
-Xmx2048m 
-XX:PermSize=32m 
-XX:MaxPermSize=512m 
-Xss2m 
-XX:+UseConcMarkSweepGC 
-XX:+CMSClassUnloadingEnabled 
-Djavax.xml.soap.MessageFactory=org.apache.axis.soap.MessageFactoryImpl 
-Djavax.xml.soap.SOAPConnectionFactory=org.apache.axis.soap.SOAPConnectionFactor‌​yImpl 
-Djavax.xml.soap.SOAPFactory=org.apache.axis.soap.SOAPFactoryImpl"

JAVA_OPTS您将最大堆设置为2048米(2G),这将无法在Win32上运行 - 这是控制此设置的-Xmx2048m选项(似乎设置了两次)。

要在Win32上运行,您应该调整-Xms-Xmx选项。 在vanilla JBoss安装(至少在我的JBoss安装中),两个选项都在standalone.conf.bat中设置。 尝试将两者都设置为1024m即可开始使用,如果仍然存在问题,请尝试减少。

您也可能想要关闭-XX:MaxPermSize(它再次被设置两次)。 256m可能会工作,但如果不尝试使用128m


要重用我的这个答案的部分内容(关于Tomcat,但适用于JBoss或任何Java进程):

Windows操作系统将32位进程的内存分配限制为2 GiB(默认情况下)。

[你将只能]分配大约1.5GB的堆空间,因为还有其他内存分配给进程(JVM /库开销,perm生成空间等)。

为什么32位Windows强加2GB的进程地址空间限制,但64位Windows强制限制4GB?

其他现代操作系统[咳嗽Linux]允许32位进程使用4 GiB可寻址空间中的所有(或大部分)进程。

也就是说,可以配置64位Windows操作系统以将32位进程的限制增加到4 GiB(32位上的3 GiB):

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx

然而[正如其他人所说],最好的解决方案是在64位操作系统上使用64位JVM。 Terabyte堆人吗? :d

因此,您将无法在Java -Xmx2048m中设置-Xmx2048m ,但-Xmx1024m可以工作 - 值接近1.5 GiB(但确切数字会有所不同)。


您应该使用64位操作系统。 在使用jboss6,jdk1.7等时,你将面临很多32位操作系统的问题......

链接地址: http://www.djcxy.com/p/82961.html

上一篇: JBoss6 fails to start on Windows (32bit) machine with JDK 7

下一篇: Error: Could not create the Java Virtual Machine Mac OSX Mavericks