MaxPermSize忽略了Tomcat 7

时间:2012-12-14 08:46:41

标签: java tomcat permgen

我正在尝试在Windows Tomcat服务器上运行多个工具。服务器启动正常,我也可以看到Tomcat的管理器页面。但是当我打开一个工具时,会出现“OutOfMemoryError:PermGen space”。我在catalina.bat中设置MaxPermSize尝试了很多,这是我的CATALINA_OPTS:

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时,我可以看到参数被很好地拾取: overview

但是当我进入监视器选项卡并检查PermGen时,最大值是67mb而不是我设置CATALINA_OPTS的512。所以参数设置,但Tomcat忽略它们.. permgen

我已经尝试将此问题解决了几个小时,但没有成功..

任何?

1 个答案:

答案 0 :(得分:5)

删除套装中的“”,你很好......不知道为什么。但那就是答案

设置CATALINA_OPTS = -Djava.awt.headless = true -Dfile.encoding = UTF-8 -server -Xms64m -Xmx512m -XX:PermSize = 128m -XX:MaxPermSize = 512m -XX:+ CMSClassUnloadingEnabled -XX:+ CMSPermGenSweepingEnabled

- 编辑

顺便说一句,我认为你也想要UseConcMarkSweepGC,否则其他2个CMS参数将不会做任何事情(只需要其中一个,取决于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中设置的,而只是很好地格式化了参数。