Spring 集成拆分器聚合器内存泄漏

Spring integration splitter aggregator memory leak

我创建了以下项目:

https://github.com/adispennette/splitter-aggregator-leak-example

测试我在另一个应用程序中看到的内存泄漏。 我正在使用 eclipse 运行 junit 并使用 jconsole 监视内存。 测试开始后,我连接到 JUnit 运行ner 并执行手动 GC。 从那时起,我让它 运行 并且内存继续增加。 这里的理论是聚合器没有正确发布。

我试图用我能想到的每一种方式来发布 collections,但它一直在增长。

有什么我遗漏的吗?

为了丢弃迟到的消息,聚合器必须保留已发布组的元数据。设置 expire-groups-upon-completion="true" 以在组发布时删除此元数据。但是,迟到的消息现在将组成一个新组。

如果您想要默认行为但又担心元数据所需的内存较少,您可以按照 in the documentation 所述配置 MessageGroupStoreReaper。空组可以按照与部分组不同的时间表过期。