我有一个在 IBM Websphere 7.0.0.19 中运行的独立应用程序。它在 Java 6 中运行,我们在 EAR 中打包了一个 Axis2 JAR。我们加载了“最后一个父级”样式类,并且我们禁用了默认情况下与 WAS7 一起打包的 Axis 服务。
最近,在连续运行 6 周以上后,该应用程序出现了 OOM。令人困惑的是,应用程序分别部署在 2 台不同的机器上。但只有一台机器坏了。第二台机器还在。
我们使用 WAS 控制台检查了操作系统、服务器配置(如类加载器策略),它们在两台机器上都是相似的。
当应用程序崩溃时,它会生成一个 .phd 文件,我们使用 Eclipse 内存分析器工具 (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-岁的 bug-jdk 仍然存在
(链接可能不涉及当前问题。但它们只是指针)
有没有人经历过类似的事情?