【发布时间】: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 上。