mq 内存溢出

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

 

 

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

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值