我正在使用256MB RAM运行服务器。我可以为Java分配的最大堆大小是110MB。当我将这些参数添加到JAVA_OPTS时,我可以运行java -version。问题是我无法使用这些参数运行Tomcat。 Tomcat运行的最大堆大小为40MB。我不知道为什么我不能分配更多的内存?
当然我收到错误:
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
答案 0 :(得分:2)
将CATALINA_OPTS
设为-Xmx110m
,JAVA_OPTS
。我想你可以设置两个,确定。
答案 1 :(得分:2)
使用Xmx
标志运行java
可执行文件时,可能会忽略-version
标志。这取决于您如何传递版本标志。以下是我的机器上带有2GB RAM的结果:
在Xmx之前传递的版本标志
C:\Users\Reynolds>java -version -Xmx10240M
java version "1.6.0_21"
Java(TM) SE Runtime Environment (build 1.6.0_21-b07)
Java HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing)
考虑到10G超出了32位环境中内存的最大可寻址限制,这很奇怪。
在Xmx之后传递版本标志
C:\Users\Reynolds>java -Xmx10240M -version
Invalid maximum heap size: -Xmx10240M
The specified size exceeds the maximum representable size.
Could not create the Java virtual machine.
C:\Users\Reynolds>java -Xmx1524M -version
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
更接近现实。
您可能希望使用第二种方法验证Java实际可用的连续内存量,然后确定最大堆大小的最佳值。
答案 2 :(得分:1)
错误消息表明您没有足够的可用RAM尝试关闭其他应用程序并查看是否可以分配更大的堆。你恐怕可能需要更多内存。