@李丹 你好,想跟你请教个问题:
在你写的activemq遇到无法解决问题中,说您没有代理producer方法,您是怎么跟踪到的呢,一定要到JVM堆栈都满了才能发现了,现在我的ACTIVEMQ中平均2个月要重启发送端,请帮忙看一下是否发送端也有问题?谢谢
目前跟踪堆栈信息如下:
所以问题就归结为,代理类每次都创建新的producer,但是没有适时的告诉服务端释放这些信息导致的,鉴于代理类是可重用而且线程独占的,那么重新代理createproducer方法,将producer对象也缓存起来重用就好了
先是查看服务器端的堆信息,发现大量的producer相关类占用了堆空间,但是不用自己写的代理又没有这个问题。但是作为一个对象池其实主要是代理close方法以便资源回收。对比原生session类的和代理类的close方法就会发现,原生类在这个方法中给服务器发送了一条消息表示当前session已经关闭,消息中包含了由当前session创建的producer consumer等对象的信息,而代理类只是简单的将session归还到池中,
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(2)
所以问题就归结为,代理类每次都创建新的producer,但是没有适时的告诉服务端释放这些信息导致的,鉴于代理类是可重用而且线程独占的,那么重新代理createproducer方法,将producer对象也缓存起来重用就好了
先是查看服务器端的堆信息,发现大量的producer相关类占用了堆空间,但是不用自己写的代理又没有这个问题。但是作为一个对象池其实主要是代理close方法以便资源回收。对比原生session类的和代理类的close方法就会发现,原生类在这个方法中给服务器发送了一条消息表示当前session已经关闭,消息中包含了由当前session创建的producer consumer等对象的信息,而代理类只是简单的将session归还到池中,