java.lang.OutOfMemoryError:使用Mule mmc和Tomcat 7的PermGen空间

时间:2017-01-06 10:13:25

标签: java apache tomcat jvm mule

我们在环境中得到了java.lang.OutOfMemoryError:PermGen空间: Windows Server 2012 R2 64位8GB RAM JRE 1.7 u80 Tomcat 7.0.73 ActiveMQ 5.9.0 Mule运行时3.5.4 通过Tomcat 7部署的Mule管理控制台3.5.3 使用PhantomJS 1.9.8部署在Tomcat 7上的webservice war文件

使用以下设置在Tomcat / bin文件夹下的setenv.bat文件: setenv JAVA_OPTS = -Xms512M -Xmx2048m -XX:PermSize = 1024m -XX:MaxPermSize = 1024m

此外,在tomcat7w.exe下的JVM注册表设置: 初始内存池:256 MB 最大内存池:1536 MB

可以解释哪个优先,setenv.bat文件设置或tomcat7w.exe设置为内存池? 此外,这个环境的理想设置应该是什么,因为这些设置目前在带有16GB RAM的64位Windows Server 2008 R2上运行?

3 个答案:

答案 0 :(得分:0)

这取决于您启动Tomcat的方式,无论是以Windows服务还是通过catalina.bat启动它。

您可以查看以下帖子:[问题]:Configure Tomcat as a service (no catalina.bat)

答案 1 :(得分:0)

正如@GKGeorgiev所说,这将取决于你如何推出Tomcat。

我建议你做一点实验:

  1. setenv.bat中的最大堆大小设置更改为足以触发立即失败的值。

  2. 启动Tomcat。

  3. 如果这导致行为发生变化(例如立即失败),您就会知道setenv.bat文件是优先考虑的文件。如果没有,那就没有。

    然后反过来做实验;即更改等效的注册表设置,看看是否有任何影响。

    另外,请检查适用于您正在使用的启动方法的Tomcat文档。

    最后,建议升级到Java 8. Java 7远远超出其EOL,并且运行没有获得安全补丁的Java版本存在风险。

答案 2 :(得分:0)

用于理想的内存设置

Xms和Xmx应该相等,

在catalina.bat内部JAVA_OPTS变量你应该定义内存参数。

开始时这将优先。

小心