PermGen内存不足的原因

| 我在自己的环境中不断检测PermGen中的OOM: Java 6的 jboss-4.2.3 网络应用程序不大 我知道String.intern()问题-但我没有足够有价值的用法。 MaxPermGen大小的增加并没有费力(从128 Mb到256 Mb)。 还有什么其他原因可以为PermGen调用OOM? 在这种情况下(策略,工具等)哪种调查方案是最佳的? 谢谢你的帮助     
已邀请:
看到这个笔记 将JDBC驱动程序放在common / lib中(如tomcat文档所说),而不是放在WEB-INF / lib中 不要将commons-logging放入WEB-INF / lib,因为tomcat已经对其进行了引导 新的类对象被放入PermGen中,因此占据了越来越大的空间。不管您创建PermGen空间有多大,在进行足够的部署后,空间将不可避免地达到顶峰。您需要做的是采取措施冲洗PermGen,以便可以稳定其大小。有两个JVM标志可以处理此清除:
-XX:+CMSPermGenSweepingEnabled
此设置将PermGen包括在垃圾收集运行中。默认情况下,PermGen空间从不包含在垃圾回收中(因此会无限制地增长)。
-XX:+CMSClassUnloadingEnabled
此设置告诉PermGen垃圾回收清除对类对象执行操作。默认情况下,即使在垃圾回收期间访问PermGen空间,类对象也会获得豁免。     
在发生类加载器泄漏的情况下重新部署应用程序时,通常会出现此错误,因为这意味着您的所有类都将在旧版本存在的情况下再次加载。 有两种解决方案: 重新启动应用程序服务器,而不是重新部署应用程序-简单但烦人 使用探查器调查并修复泄漏。不幸的是,很难查明类加载器泄漏。     

要回复问题请先登录注册