【问题标题】:Permgen growing while deploying web applications on Jboss 6Permgen 在 Jboss 6 上部署 Web 应用程序时不断增长
【发布时间】:2012-02-02 09:19:07
【问题描述】:

正在将早期在 Jboss 4.2.3 上的 Web 应用程序移植到 Jboss 6 上。总共大约有 12 个 Web 应用程序,其中只有 4 个已部署。

这些 Web 应用程序基于 Axis2 1.5.5、spring 2.5、hibernate 3.2.5、OpenJPA 1.0、saxon 9.1。

classloader隔离设置如下

<class-loading java2ClassLoadingCompliance="false">
        <loader-repository>
            webapp:loader=webapp.war
            <loader-repository-config>java2ParentDelegation=false</loader-repository-config>
        </loader-repository>
</class-loading>

我看到 PermGen 已经达到 440MB 并且在 Jboss 6 上不断增长,我设置了 -XX:MaxPermSize=512m

任何人都可以提供我在此处识别问题的意见吗?

环境:JDK 1.6.0_26、Ubuntu 11.10

【问题讨论】:

  • 谁说这是个问题?在一个 JVM 上部署 12 个应用程序很多,而 440MB pf permgen 处理这个问题听起来并不过分。
  • skaffman,感谢您的回复,相同的应用程序在 JBoss 4.2.3 上占用大约 150-170MB 的 PermGen,默认设置 -XX:MaxPermSize=256m 已经足够了。但是在 Jboss 6 上,我只部署了 12 个应用程序中的 5 个,而 PermGen 几乎是 3 倍。我还验证了在 Jboss 4.2.3 上加载的类数量约为 25K,在 Jboss 6 上为 60K。
  • JBoss 6 比 JBoss 4 对内存的要求要高得多。这听起来很对。
  • 我终于可以把所有的 12 个应用程序都放好。服务器需要将近 10 分钟才能启动。 Permgen 已达到 1GB。堆约为 1.8GB。我的桌面在动画中运行:)。我有 4GB 内存。顺便说一句,我在 64 位硬件/操作系统/JDK 上。

标签: jvm jboss6.x permgen


【解决方案1】:

JBoss 6 对 perm gen 内存方面要求更高的原因,我不知道。 但是当您禁用注释扫描(如果不使用它)时,启动时间可能会有所改善。它对我们的应用程序有帮助。

【讨论】:

    【解决方案2】:

    上周我遇到了同样的问题。 JBoss-6 微容器尝试通过在启动时从类路径中的所有 JAR 加载类来扫描 Jboss 特定的注释。这会导致 PermGen 膨胀,因为它开始加载所有不需要的类。

    为了减少扫描量,微容器通过 jboss-scanning.xml 提供了另一个描述符挂钩。 将此“jboss-scanning.xml”添加到 WAR 内的 WEB-INF,并将“jboss-scanning.xml”添加到 EAR 内的 META-INF。

    <scanning xmlns="urn:jboss:scanning:1.0">
    
        <!-- Purpose: Disable scanning for annotations in contained deployment. -->
    
    </scanning>
    

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多