Jakarta ee 无法启动Glassfish 3.1:java.io.IOException:错误=12,无法分配内存
我刚从A2Hosting购买了一个Ubuntu9.0.4VPS(256MB的专用RAM(512MB的Burstable)),并尝试在上面安装一个Glassfish服务器。当我尝试Jakarta ee 无法启动Glassfish 3.1:java.io.IOException:错误=12,无法分配内存,jakarta-ee,glassfish,java-ee-6,Jakarta Ee,Glassfish,Java Ee 6,我刚从A2Hosting购买了一个Ubuntu9.0.4VPS(256MB的专用RAM(512MB的Burstable)),并尝试在上面安装一个Glassfish服务器。当我尝试asadmin start domain时,我遇到了这个错误 JVM failed to start: java.io.IOException: Cannot run program "/usr/local/jdk1.6.0_22/bin/java" (in directory "/home/harry/glassfi
asadmin start domain
时,我遇到了这个错误
JVM failed to start: java.io.IOException: Cannot run program "/usr/local/jdk1.6.0_22/bin/java"
(in directory "/home/harry/glassfish3/glassfish/domains/domain1/config"):
java.io.IOException: error=12, Cannot allocate memory
Command start-domain failed.
以下是free
命令的结果
total used free shared buffers cached
Mem: 524288 148552 375736 0 0 0
-/+ buffers/cache: 148552 375736
Swap: 0 0 0
编辑
包含domain.xml
<java-config debug-options="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${JAVA_DEBUGGER_PORT}" system-classpath="" classpath-suffix="">
<jvm-options>-XX:MaxPermSize=192m</jvm-options>
<jvm-options>-server</jvm-options>
<jvm-options>-XX:+UnlockDiagnosticVMOptions</jvm-options>
<jvm-options>-Djava.endorsed.dirs=${com.sun.aas.installRoot}/modules/endorsed${path.separator}${com.sun.aas.installRoot}/lib/endorsed</jvm-options>
<jvm-options>-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy</jvm-options>
<jvm-options>-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf</jvm-options>
<jvm-options>-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as</jvm-options>
<jvm-options>-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keystore.jks</jvm-options>
<jvm-options>-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks</jvm-options>
<jvm-options>-Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${com.sun.aas.javaRoot}/jre/lib/ext${path.separator}${com.sun.aas.instanceRoot}/lib/ext</jvm-options>
<jvm-options>-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver</jvm-options>
<jvm-options>-DANTLR_USE_DIRECT_CLASS_LOADING=true</jvm-options>
<jvm-options>-Dcom.sun.enterprise.config.config_environment_factory_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory</jvm-options>
<jvm-options>-XX:NewRatio=2</jvm-options>
<jvm-options>-Xmx512m</jvm-options>
<!-- Port on which remote shell listens for connections.-->
<jvm-options>-Dosgi.shell.telnet.port=${OSGI_SHELL_TELNET_PORT}</jvm-options>
<!-- How many concurrent users can connect to this remote shell -->
<jvm-options>-Dosgi.shell.telnet.maxconn=1</jvm-options>
<!-- From which hosts users can connect -->
<jvm-options>-Dosgi.shell.telnet.ip=127.0.0.1</jvm-options>
<!-- Directory being watched by fileinstall. -->
<jvm-options>-Dfelix.fileinstall.dir=${com.sun.aas.installRoot}/modules/autostart/</jvm-options>
<!-- Time period fileinstaller thread in ms. -->
<jvm-options>-Dfelix.fileinstall.poll=5000</jvm-options>
<!-- log level: 1 for error, 2 for warning, 3 for info and 4 for debug. -->
<jvm-options>-Dfelix.fileinstall.log.level=3</jvm-options>
<!-- should new bundles be started or installed only?
true => start, false => only install
-->
<jvm-options>-Dfelix.fileinstall.bundles.new.start=true</jvm-options>
<!-- should watched bundles be started transiently or persistently -->
<jvm-options>-Dfelix.fileinstall.bundles.startTransient=true</jvm-options>
<!-- End of OSGi bundle configurations -->
</java-config>
-XX:MaxPermSize=192m
-服务器
-XX:+解除锁定诊断VMOptions
-Djava.annowed.dirs=${com.sun.aas.installRoot}/modules/annowed${path.separator}${com.sun.aas.installRoot}/lib/annowed
-Djava.security.policy=${com.sun.aas.instanceRoot}/config/server.policy
-Djava.security.auth.login.config=${com.sun.aas.instanceRoot}/config/login.conf
-Dcom.sun.enterprise.security.httpsOutboundKeyAlias=s1as
-Djavax.net.ssl.keyStore=${com.sun.aas.instanceRoot}/config/keyStore.jks
-Djavax.net.ssl.trustStore=${com.sun.aas.instanceRoot}/config/cacerts.jks
-Djava.ext.dirs=${com.sun.aas.javaRoot}/lib/ext${path.separator}${com.sun.aas.javaRoot}/jre/lib/ext${path.separator}${com.sun.aas.instanceRoot}/lib/ext
-Djdbc.drivers=org.apache.derby.jdbc.ClientDriver
-DANTLR\u使用\u直接\u类\u加载=真
-Dcom.sun.enterprise.config.config_环境_工厂_class=com.sun.enterprise.config.serverbeans.AppserverConfigEnvironmentFactory
-XX:NewRatio=2
-Xmx512m
-Dosgi.shell.telnet.port=${OSGI_shell_telnet_port}
-Dosgi.shell.telnet.maxconn=1
-Dosgi.shell.telnet.ip=127.0.0.1
-Dfelix.fileinstall.dir=${com.sun.aas.installRoot}/modules/autostart/
-Dfelix.fileinstall.poll=5000
-Dfelix.fileinstall.log.level=3
-Dfelix.fileinstall.bundles.new.start=true
-Dfelix.fileinstall.bundles.startttransient=true
尝试减少-Xmx512m行中的金额,直到您得到一些有效的东西。然后联系您的提供商,看看您的限制在哪里。它包含大约400行代码,我有与jvm
相关的东西,如果您想查看全部内容,请让我知道。-Xmx512m
代表什么,普雷斯顿?试着减少到64m
,它仍然不起作用。我购买的VPS具有256 MB专用RAM(512 MB Burstable)
。还有别的想法吗?谢谢,manXmx是您的最大堆大小。Xms是您的初始堆大小。也许您需要显式地将Xms设置为256。请记住,最低要求是1GB的RAM。但是,我有在512上运行的实例。您还可以查看旧的2.1性能调优指南。3.0版似乎还没有。man最低要求为1GB内存。我不知道。所以你认为错误无法分配内存是因为我没有足够的内存?我尝试将-Xms128m
添加到domain.xml
,但它仍然会给我相同的错误。您的问题肯定与系统试图分配的内存比它的内存多有关。如果您无法通过调整Xms、Xms选项使其工作,那么您应该尝试将可用RAM增加到最小。