0

我做了一个测试,基于activemq-cpp库的示例解决方案。在测试中,我将 50,000 条消息发送到一个队列,在它们全部发送后,我INDIVIDUAL_ACKNOWLEDGE在会话和message->acknowledge()每条消费消息上使用它们。消费者是异步的。

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

4

1 回答 1

1

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

于 2013-08-08T14:09:33.983 回答