我的Tomcat 6服务器上出现"PermGen"错误.
我知道应用程序导致了什么问题,但我不确定它为什么会这样做.该应用程序使用MySQL 5并在JDK 6上运行.
是否有任何工具/建议可用于诊断或分析特定应用的基本问题?
谢谢
PermGen用于存储类定义和实习字符串池.您的代码可能正在填充它(如果它不必要地调用实习生),但更可能的是您的应用程序的默认值不足.
这是因为Tomcat将在每次部署WAR时加载新类 - 或者,如果您在开发环境中工作,则每次编辑JSP时都会加载.这些应该最终得到清理,但在活动的开发环境中,您可以拥有加载旧实例和新实例的时段.或者,如果您在生产环境中并拥有大型Web应用程序,则可能只需要更多空间.
要设置permgen大小,请使用 -XX:MaxPermSize=SIZE
以下链接可能会有所帮助:调整GC(这是1.5版),GC FAQ(1.4.2版),Hotspot VM选项(我相信这是1.6)
尝试以下JVM切换器:
-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
提升permgen空间-XX:MaxPermSize
只会延误问题.
请参阅此评论: 如何处理"java.lang.OutOfMemoryError:PermGen space"错误
这间接指向了我这两个帖子:问题,解决方案