据我所知,一台服务器上部署了多次战争,因此每次重启服务器都不是一个好选择。所以我只是部署具有任何版本更新的特定战争。但几天后,它引发了堆空间问题。如果我没有做dodeploy并在更新版本时重新启动服务器。它不会引发堆空间问题。

所以我对此表示怀疑。

1)在jboss7中部署战争时,它在内部做什么?

2)不是对以前战争的所有对象都进行垃圾收集吗?

3)部署时是否需要进行任何其他设置才能完美运行?

这个问题可能很愚蠢..但是对于生产服务器上的我来说这是一个非常严重的问题。

提前致谢。

最佳答案

通过重新部署WAR文件触发的OOME是类加载器泄漏的典型症状:


JBoss 7中显然存在类加载器泄漏。
您的代码正在执行的某些操作可能会导致类加载器泄漏。


不幸的是,这些泄漏可能很难跟踪和消除,通常更实用的方法是关闭并重新启动容器。

参考文献:


Classloader leaks: the dreaded "java.lang.OutOfMemoryError: PermGen space" exception
How to fix the dreaded "java.lang.OutOfMemoryError: PermGen space" exception
ClassLoader leaks in AS7
JBoss 7, java.lang.OutOfMemoryError: PermGen space

07-26 09:30
查看更多