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