0
我基於activemq-cpp庫的示例解決方案進行了測試。 在測試中,我向隊列發送了50,000條消息,並且在它們全部發送之後,我將它們消費,會話上的INDIVIDUAL_ACKNOWLEDGE
和每個消費的消息上的message->acknowledge()
。消費者是異步的。ActiveMQ - 消耗所有消息後未釋放內存
發送消息之前java.exe的內存(專用工作集):209,320 KB。發送完所有消息後:412,548 KB。在之後消耗所有消息:434,637 KB。意思是,雖然隊列大小爲0,但內存未被釋放。 我錯過了什麼? 謝謝。
From http://stackoverflow.com/questions/16649601/java-exe-process-uses-more-memory-and-does-not免費提供:當需要執行一些複雜邏輯時,JVM獲取內存。當Java完成任務時,JVM仍將該內存保留爲保留空間,並且不會釋放回操作系統。這種體系結構有助於提高性能,因爲JMV不必再從底層操作系統請求相同的內存。它仍然在-Xmx JVM參數中定義的範圍內。 ' - 即,這種行爲是正常的。 – fvu
這很有道理。謝謝。 –