ActiveMQ - 消耗所有消息后未释放内存

时间:2013-08-07 15:01:27

标签: activemq activemq-cpp

我已根据activemq-cpp库的示例解决方案进行了测试。 在测试中,我向队列发送了50,000条消息,在它们全部发送完毕后,我会消耗它们,会话中有INDIVIDUAL_ACKNOWLEDGE,每条消费消息都有message->acknowledge()。消费者是异步的。

发送邮件之前java.exe的内存(私有工作集):209,320 KB。发送所有消息后:412,548 KB。 消费后所有消息:434,637 KB。意思是,虽然队列大小为0,但内存未被释放。 我错过了什么? 感谢。

1 个答案:

答案 0 :(得分:1)

除了上面提到的JVM处理之外,还有许多其他因素在这里发挥作用。当您启动生产者发送消息时,根据代理的状态,可能会有许多资源在代理上分配以创建队列,以及各种其他管理对象,这些对象将保留在内存中以便于消息路由等。分析内存使用情况并检查泄漏,你应该使用像Yourkit等工具。