MaxPermSize忽略了Tomcat 7

har*_*anr 2 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"
Run Code Online (Sandbox Code Playgroud)

当我在我的Tomcat服务器旁边运行JVisualVM时,我可以看到参数被很好地拾取: 概观

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

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

任何人?

Del*_*rth 5

删除集合中的"",你很好......不知道为什么.但那就是答案

set 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参数都不会做任何事情(仅需要2个中的一个,取决于JVM的版本)

请参阅 JVM标志CMSClassUnloadingEnabled实际上做了什么?

- 编辑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中设置的,而只是很好地格式化了参数.