在生产环境中面对以下问题但在QA环境中无法重现。请帮助解决此问题。
我们使用域控制器在Jboss EAP 6.2集群设置中部署了一个Java应用程序,并使用HornetQ作为消息系统,该系统有4个队列和一个主题,并使用MDB和MDP侦听器进行队列和主题,应用程序运行良好,服务器运行状况良好一个星期,但一周后服务器崩溃,出现内存不足错误。我接受了堆转储并用MAT进行了分析,发现了很多ClientSessionFactoryImpl
的实例(大约1,73,329个实例占用了707MB的堆内存)并且没有收集垃圾。
Problem Suspect 1
1,73,329 instances of "org.hornetq.core.client.impl.ClientSessionFactoryImpl", loaded by "org.jboss.modules.ModuleClassLoader @ 0x760004438" occupy 741,790,528 (83.13%) bytes. These instances are referenced from one instance of "java.util.HashMap$Entry[]", loaded by "<system class loader>"
Keywords
org.jboss.modules.ModuleClassLoader @ 0x760004438
org.hornetq.core.client.impl.ClientSessionFactoryImpl
java.util.HashMap$Entry[]
OS: RHEL 6.8
server: Jboss EAP 6.2
java: JDK 1.6_24