我们在我们的环境中获得了java.lang.OutOfMemoryError: PermGen空间: Windows Server 2012 R2 64位8 8GB JRE 1.7 u80 Tomcat7.0.73 ActiveMQ 5.9.0 Mule runtime 3.5.4 Mule管理控制台3.5.3部署在Tomcat7 webservice war文件上,该文件使用在Tomcat7上部署的PhantomJS 1.9.8
Tomcat/bin文件夹下的setenv.bat文件,设置如下: setenv JAVA_OPTS=-Xms512M -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=1024m
另外,JVM的注册表设置在tomcat7w.exe下:初始内存池:256MB最大内存池:1536MB
可以解释一下内存池的setenv.bat文件设置和tomcat7w.exe设置哪个优先吗?此外,此环境的理想设置应该是什么,因为这些设置当前在windows server 2008 R2 64位和16 64内存上运行?
发布于 2017-01-06 18:19:25
这取决于你是如何启动Tomcat的,是作为windows服务启动还是通过catalina.bat启动。
你可以查看以下帖子:问题:Configure Tomcat as a service (no catalina.bat)
发布于 2017-01-06 19:18:13
正如@GKGeorgiev所说,这将取决于您如何启动Tomcat。
我建议你做个小实验:
setenv.bat中的最大堆大小设置更改为足以触发立即失败的值。如果这导致行为改变(例如,立即失败),您就知道setenv.bat文件是优先的文件。如果不是,那就不是。
然后以相反的方式进行实验;即更改等效的注册表设置,看看是否有任何效果。
此外,请查看适用于您正在使用的启动方法的Tomcat文档。
最后,建议升级到Java 8。Java 7远远超出了它的EOL,并且运行一个没有获得安全补丁的Java版本是有风险的。
发布于 2017-01-08 04:45:38
对于理想的内存设置
Xms和Xmx应该相等,
在catalina.bat JAVA_OPTS变量中,您应该定义内存参数。
在启动时,这将优先。
保重
https://stackoverflow.com/questions/41503399
复制相似问题