有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

但当我转到monitor选项卡并检查PermGen时,最大值是67mb,而不是我设置CATALINA_选项的512。因此参数已设置,但Tomcat忽略了它们。。 permgen

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

有人吗


共 (1) 个答案

  1. # 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中是如何设置的,而是只会很好地格式化参数