我们有三台配备 2 GB RAM 的 Windows Server 2003。
- 服务器1 tomcat 5.5.25 jvm 版本 SUN 1.6.0_11-b03
- 服务器2 tomcat 5.5.25 jvm 版本 SUN 1.6.0_14-b08
- 服务器3 tomcat 6.0.18 jvm 版本 SUN 1.6.0_14-b08
这三台服务器的 JVM 参数如下:
-XX:MaxPermSize=256m
-Dcatalina.base=C:\Programmi\Apache Group\apache-tomcat-5.5.25
-Dcatalina.home=C:\Programmi\Apache Group\apache-tomcat-5.5.25
-Djava.endorsed.dirs=C:\Programmi\Apache Group\apache-tomcat-5.5.25\common\endorsed
-Djava.io.tmpdir=C:\Programmi\Apache Group\apache-tomcat-5.5.25\temp vfprintf
-Xms512m
-Xmx1024m
几个月来一切都运行良好。上周五我们安装了一些 Windows 更新。重启后,tomcat 无法启动,并出现错误:
Error occurred during initialization of VM
Could not reserve enough space for object heap
我们将参数 -Xmx1024m 减小到 -Xmx768m,现在 tomcat 可以启动了。但我们需要更大的最大堆大小。我们的服务器怎么了?提前致谢。
答案1
我找到了问题所在。我卸载了 Windows 更新 KB956572。第一次重启后,Tomcat 正常启动,并显示 -Xmx1024m。然后我再次安装了 Windows 更新 KB956572。再次重启:Tomcat 启动失败,并出现上一个错误
Error occurred during initialization of VM
Could not reserve enough space for object heap
答案2
就我而言,卸载 KB956572 后,java 可以分配比此更新更多的内存,但在安装前分配较少的内存。
我认为问题的原因在 Microsoft 文章中有所描述: http://support.microsoft.com/kb/956572/en