Apache Artemis如何管理堆空间(RAM)

时间:2017-02-27 23:22:29

标签: java activemq-artemis

在我们的项目中,我们使用两个队列,一个用于正常处理,另一个用于错误。 “错误”队列有时会被“错误”消息填充,这些消息位于那里,直到人检查出来。在某些情况下,“错误”队列会填充大量消息,然后JVM会耗尽堆。

例如,目前,JVM配置了最大4GB堆,并随机获取OOM异常。我们使用了MemoryAnalyzer和IBM Heap Analyzer,两者都指向了Artemis。当我检查文件系统上日志的大小时,大约是5GB。

我们发送:

  • 小消息
  • 持久
  • 不使用Netty或远程处理(只需使用Artemis进行异步处理 处理)

所以,我的问题是关于Apache Artemis堆管理和建议:

  1. 它是否也将持久性消息存储在RAM中,即使它们已经存储在文件系统中?
  2. 如果#1为真,那么控制/限制Artemis分配的RAM量的策略是什么?
  3. 感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

对于那些对此主题感兴趣的人,答案是在Artemis论坛上提供的: http://activemq.2283324.n4.nabble.com/How-does-Apache-Artemis-manage-heap-space-RAM-tt4723220.html