我创建了以下项目:
https://github.com/adispennette/splitter-aggregator-leak-example
测试我在另一个应用程序中看到的内存泄漏。 我正在使用eclipse运行junit并使用jconsole监视内存。 一旦测试开始,我就连接到JUnit跑步者并做一个手动GC。 从那时起,我让它运行,内存继续增加。 这里的理论是聚合器没有正确释放。
我试图以我能想到的各种方式发布这些集合,但它一直在增长。
有什么我想念的吗?
答案 0 :(得分:2)
为了丢弃迟到的消息,聚合器必须保留已发布组的元数据。设置expire-groups-upon-completion="true"
以在发布组时删除此元数据。但是,迟到的消息现在将形成一个新组。
如果您想要默认行为但担心元数据所需的少量内存,则可以按照in the documentation所述配置MessageGroupStoreReaper
。空组可以按不同的计划到期到部分组。