我们遇到一个OutofMemory错误。我使用Eclipse Memory Analyzer分析了websphere转储的*.phd文件。
MAT的泄漏可疑报告提供了以下信息
类"com.ibm.rmi.io.ValueHandlerPool",由"com.ibm.oti.vm.BootstrapClassLoader @ 0x466578“加载,占用68,734,136 (50.25%)字节。内存累积在“java.util.Hashtable$@ 0x466578”加载的"com.ibm.oti.vm.BootstrapClassLoader Entry[]“的一个实例中。
但我不能将这个泄漏嫌犯与应用程序的任何类联系起来。没有明显的联系。
有什么建议如何进行分析吗?
环境:我们在Windows上运行的jdk 1.4.2上使用Websphere 6.1。数据库是oracle 10gR1。该应用程序是一个struts-Ejb应用程序。
发布于 2009-06-26 13:56:14
尝试“深入”到Entry[]实例。它应该向您显示条目是什么。
在一个不相关的注释中,com.ibm.rmi.io包暗示这可能与所包含的RMI -EJB有关。
发布于 2009-07-13 12:07:57
还要查看该哈希表的成员数量。例如,如果你有一个海量成员,那么它将表示更深层次的东西(可能是某处缓存的数据)。如果您在哈希表中有数千个成员,则可能表明您正在泄漏实例。
我通常发现泄漏的应用程序是因为信息被缓存而不是被处理。泄漏是在启动时发生,还是在空闲时增长,还是只在负载下发生?
https://stackoverflow.com/questions/1049005
复制相似问题