java MaxPermSize忽略了Tomcat 7
我正在尝试在Windows Tomcat服务器上运行几个工具。服务器启动正常,我还可以看到Tomcat的管理器页面。但当我打开一个工具时,会出现“OutOfMemoryError:PermGen space”。我在catalina中设置MaxPermSize做了很多尝试。蝙蝠,这是我的CATALINA_选项:
set CATALINA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms64m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled"
当我在Tomcat服务器旁边运行JVisualVM时,我可以看到参数被很好地拾取:
但当我转到monitor选项卡并检查PermGen时,最大值是67mb,而不是我设置CATALINA_选项的512。因此参数已设置,但Tomcat忽略了它们。。
我已经试着解决这个问题好几个小时了,但没有成功
有人吗
# 1 楼答案
移除集合中的“”就可以了。。。还不知道为什么。但这就是答案
设置CATALINA_OPTS=-Djava。awt。headless=true-Dfile。编码=UTF-8-服务器-Xms64m-Xmx512m-XX:PermSize=128m-XX:MaxPermSize=512m-XX:+CMSClassUnloadingEnabled-XX:+CMSClassUnloadingEnabled
编辑
顺便说一句,我想你也需要UseConcMarkSweepGC,否则其他两个CMS参数就没用了(2个参数中的一个只需要,取决于JVM的版本)
看到了吗 What does JVM flag CMSClassUnloadingEnabled actually do?
编辑2
tomcat6在这里也被问到这个问题:https://serverfault.com/questions/64894/setting-catalina-opts-for-tomcat6-on-windows-doesnt-work
可惜博主没有解释为什么你不需要在windows中使用引号
http://javahowto.blogspot.nl/2006/06/6-common-errors-in-setting-java-heap.html
但我认为这是因为引用这些话被视为一个大论点。我唯一不明白的是为什么jvisualvm会假装你设置正确。但我猜参数的显示实际上并不是看它在JVM中是如何设置的,而是只会很好地格式化参数