我有一个运行在IBM Websphere 7.0.0.19中的独立应用程序。它在Java6中运行,我们把一个Axis2 JAR包在耳朵里。我们有'parent last‘风格的类加载,并且我们已经禁用了默认情况下用WAS7打包的Axis服务。
最近,在6+连续运行数周后,应用程序出现了面向对象的问题。令人困惑的是,应用程序分别部署在两台不同的机器上。但只有一台机器出了故障。第二台机器仍在运行。
我们使用WAS控制台检查了操作系统、服务器配置,如类加载器策略,它们在两台机器上是相似的。
当应用程序崩溃时,它生成了一个.phd文件,我们使用Eclipse Memory Analyser Tool (MAT)对该文件进行了分析。分析结果如截图所示。

如果我没记错的话,引导类加载器会反复加载并保留AxisConfiguraiton的引用,因此GC在运行时无法收集这些引用。但是,如果是这种情况,那么两台服务器肯定都宕机了。但只有一台服务器遇到了OOM。在两台机器上分配给JVM的内存是相同的。
我们不确定问题是WAS7还是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
(链接可能不指向当前问题。但它们只是一些指针)
有没有人经历过类似的事情?
发布于 2013-01-17 01:34:44
在过去的Axis21.4中,我们看到了WebSphere 6.1的内存增长和套接字的开放。这已经很久了,但我的笔记表明,可能值得考虑至少升级到Axis2 1.5.1来修复this bug with the open sockets,并确保您不会在单例存在的地方重复创建新对象(例如服务对象)。
https://stackoverflow.com/questions/14313129
复制相似问题