我有連接到activemq主題的控制檯應用程序。每個主題上每秒發佈10封郵件。經過一段時間監控應用程序內存在增加,並且在使用所有內存時,應用程序崩潰。 查看下面的轉儲。爲什麼ActiveMQTopicSubsctiber使用這麼多堆?它也是不可見的,但ListEntries約爲14000(這意味着14k消息)。Activemq主題訂閱者堆內存泄漏 - 爲什麼消息增加?
http://imageshack.us/photo/my-images/404/amqmemoryproblem.png
我有連接到activemq主題的控制檯應用程序。每個主題上每秒發佈10封郵件。經過一段時間監控應用程序內存在增加,並且在使用所有內存時,應用程序崩潰。 查看下面的轉儲。爲什麼ActiveMQTopicSubsctiber使用這麼多堆?它也是不可見的,但ListEntries約爲14000(這意味着14k消息)。Activemq主題訂閱者堆內存泄漏 - 爲什麼消息增加?
http://imageshack.us/photo/my-images/404/amqmemoryproblem.png
一對夫婦的事情,可能是檢查:
如果在內存中保留消息仍然是一個問題,您應該考慮configuring ActiveMQ to use file cursors。文件光標的使用告訴ActiveMQ將消息緩存到磁盤而不是將它們保存在內存中。
1)是的,他們被消耗,我知道肯定是因爲他們登錄我的onMessage方法。 – user358448
2)我沒有指定任何。讓我更新我的問題...我需要實時使用消息,所以如果一些消息變老(它在1-2秒後不會被消耗,這是舊的),我不需要它,我需要更新的消息這是後來它。我讀了關於constantPendingMessageLimitStrategy,但我不知道如何設置它(生產者和主題代碼與服務組合,我的消費者是與java jms客戶端)。是否有可能從broker uri中設置constantPendingMessageLimitStrategy,比如2)中的prefetchLimit? – user358448
我解決了,謝謝。 – user358448