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.SOAPConnectionFactoryImpl
-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