轮询任务执行器内存泄漏

Poller Task Executor Memory Leak

我正在构建一个企业应用程序,我正在使用活动 mq 进行应用程序之间的内部通信。当我将任务执行器与我的轮询器 AbstractPollingEndpoint 和 ErrorHandlingTaskExecutor 对象实例一起使用时,会导致内存泄漏。即使应用程序处于空闲模式,堆中的对象计数也会增加。当我关闭这部分代码时 .taskExecutor(outTaskExecutor) 问题不再发生。但是我们正在为大流量做准备,我们不需要提供更多的线程来处理消息。我究竟做错了什么?你能帮忙吗? 谢谢

Visual VM Heap Comparison

Executor Service outTaskExecutor = Executors.newFixedThreadPool(10);

IntegrationFlow jmsOutbound = IntegrationFlows.from(jmsInChannel)
                .handle(Jms.outboundAdapter(this.jmsTemplate.getConnectionFactory())
                                .destinationExpression("headers['responseQueueName']")
                        , s -> s.poller(p -> p.fixedDelay(pollerDelay).taskExecutor(outTaskExecutor)).get())
                .get();
        this.flowContext.registration(jmsOutbound).id("jmsOutbound").register();

每个动态流都有 Executor Service outTaskExecutor = Executors.newFixedThreadPool(10); 看起来不对。为什么不将其作为 单例 并与所有动态流共享?

另请注意文档中对类似问题的描述:https://docs.spring.io/spring-integration/reference/html/#async-polling

加上这个问题: