【发布时间】:2012-12-28 02:22:46
【问题描述】:
我有一个在 IBM Websphere 7.0.0.19 中运行的独立应用程序。它在 Java 6 中运行,我们在 EAR 中打包了一个 Axis2 JAR。我们加载了 'parent last' 样式类,并且默认禁用了 WAS7 打包的 Axis 服务。
最近,在连续运行 6 周以上后,该应用程序出现了 OOM。令人困惑的是,应用程序分别部署在 2 台不同的机器上。但只有一台机器坏了。第二台机器还在。
我们使用 WAS 控制台检查了操作系统、服务器配置(如类加载器策略),它们在两台机器上都相似。
当应用程序崩溃时,它会生成一个 .phd 文件,我们使用 Eclipse Memory Analyzer Tool (MAT) 对其进行分析。分析显示在屏幕截图中。
如果我是正确的,引导类加载器会重复加载并保持对 AxisConfiguraiton 的引用,因此 GC 在运行时无法收集它们。但是,如果是这种情况,那么两台服务器都必须停机。但只有一台服务器经历了 OOM。两台机器上分配给 JVM 的内存是一样的。
我们不确定问题出在 WAS 7、axis2-kernel-1.4.1.jar 还是其他问题上。
http://www.slideshare.net/leefs/axis2-client-memory-leak
https://issues.apache.org/jira/browse/AXIS2-3870
http://java.dzone.com/articles/12-year-old-bug-jdk-still-out
(链接可能不涉及当前问题。但它们只是指针)
有没有人经历过类似的事情?
【问题讨论】:
-
你能在 7.0.0.25 上试试吗(排除它在 websphere 中的错误)
-
@AviramSegal - WAS 7.0.0.19 中是否存在可能导致此问题的已知错误?即使我改变了这一点,你不认为复制这个问题需要大量的时间。另外,如果是 Websphere 的错误,为什么第二台服务器没有关闭?只有一台服务器出现 OOM,另一台仍在运行。
-
没有具体的我知道,但你永远不会知道。此外,这个question 可能是相关的
-
@AviramSegal - 我们已经忽略了 IBM 构建到 WAS 中的 Axis。我们打包单独的 Axis2 Jar。这就是我们截图中出现org.apache.axis2.....异常的原因。
-
我的感觉是泄漏发生在 Axis 本身,而不是 WebSphere,但我无法确切说明原因。不过,我肯定会先尝试 7.0.0.25。废话不多说,希望有经历过的人来解答。祝你好运:)
标签: java websphere out-of-memory axis2