【发布时间】:2011-04-26 09:22:22
【问题描述】:
我们有一个运行良好一年的应用程序。它是一个 Web 应用程序,在 Windows Server 2003 Enterprise Edition Service Pack 2 上的 Microsoft Cluster 下的 Tomcat 5.5 + JDK 1.5 下运行。服务器有 11Gb 的 RAM(我知道它没用!),描述如下“物理地址扩展” : 我不知道那是什么意思。
Tomcat服务配置如下参数:-Xmx1024m -Xms128m
自上周以来,该服务不想再启动并停止并显示以下错误消息:“无法分配足够的堆空间”。
我们尝试了几个测试:
-
java -Xmx1024m -version=> 失败 -
java -Xmx758m -version=> 失败 -
java -Xmx512m -version=> 通过
所以我们可以使用更少的内存来获得最大堆大小,但这不是一个可接受的解决方法,因为用户数量会在几个月后增加,我们需要将最大堆大小设置为 1024Mb。
我也不明白为什么它工作正常,然后突然停止工作!似乎操作系统现在无法分配连续内存或其他内容(页面文件大小、用户内存分配......)
很难知道是否发生了某些变化(操作系统补丁、配置等),因为 Web 应用程序在客户服务器上运行,而我们无权访问它。
【问题讨论】:
-
-Xmx1024m -Xmx128m,真的吗?你的意思是-Xmx1024m -Xms128m(注意-Xms)? -
物理地址扩展:en.wikipedia.org/wiki/Physical_Address_Extension - 这意味着 32 位处理器可以访问超过 4 GB 的内存。
-
另外我忘了说我们在“C:\Program Files\Java\jre1.6.0_07”中找到了一个 JRE 1.6。 JDK(即 1.5)不在系统路径中,但上面的测试使用的是 JDK 而不是 JRE。 Tomcat 也被配置为使用 JDK。
-
Ouups sorru:是的,它是 -Xmx1024m -Xms128m
-
尝试其他 JVM - 最新的 1.6、最新的 1.5、最新的 1.7。 JVM 可能有问题
标签: java memory memory-management garbage-collection windows-server-2003