`
miraclerz
  • 浏览: 97082 次
社区版块
存档分类
最新评论

mq 内存溢出

 
阅读更多

      项目总是运行几天就自动挂了,内存溢出,拿工具指令发现是mq占内存越来越多,并无回收,怀疑代码有问题,导致java垃圾回收一直没能回收到这几个mq类

 

 

于是查了下底层代码,既然是这个ActiveMQTextMessage 久居不下,就看下是哪里用的这个,发现所有的消息都是来是ActiveMQTextMessage 类的,一般来说消息发完,或者消费完,这个类就直接处理无效状态,会给垃圾回收的了。但是看这情况是没有回收的,于是再往里看一下,发现 message.setConnection(this.connection);这一句,网上很多例子是直接这样发完就行了,因为他们的connection是临时产生的,发完,connection是直接关闭的,而我们的框架里connection是共用的,也就是connection是重复利用,并不是用一次关一次的,这样message里就一直存在着活着的connection,怀疑是这个问题导致ActiveMQTextMessage 不能给回收,于是在发完消息和接收处理完消息后面直接把ActiveMQTextMessage  的实例置为null。再测试,发现ActiveMQTextMessage 不再久居不下了,问题得到解决!

 

 

 

 

  • 大小: 54.2 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics