Утечка памяти исполнителя задач опроса

Я создаю корпоративное приложение и использую активный mq для внутренней связи между приложениями. Когда я использую исполнителя задач с моим опросником, экземпляры объектов AbstractPollingEndpoint и ErrorHandlingTaskExecutor вызывают утечку памяти. Количество объектов в куче увеличивается, даже если приложение находится в режиме ожидания. Когда я закрываю эту часть кода .taskExecutor(outTaskExecutor), проблема больше не возникает. Но мы готовимся к интенсивному трафику, и нам не нужно предоставлять больше потоков для обработки сообщений. Что я делаю не так? Можете ли вы помочь, пожалуйста? Спасибо

Визуальное сравнение кучи виртуальных машин

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();

person Cennet Demir    schedule 06.09.2019    source источник


Ответы (1)


Неправильно иметь Executor Service outTaskExecutor = Executors.newFixedThreadPool(10); для каждого отдельного динамического потока. Почему бы просто не использовать его как singleton и не использовать совместно со всеми вашими динамическими потоками?

Также обратите внимание на это описание аналогичной проблемы в документах: https://docs.spring.io/spring-integration/reference/html/#async-polling

Плюс этот ТАК вопрос: утечка из-за тайм-аута приема и некорректной конфигурации исполнителя задачи

person Artem Bilan    schedule 06.09.2019
comment
Я попытался сделать его синглтоном, но утечка памяти продолжалась. - person Cennet Demir; 10.09.2019
comment
Ну, это просто, чтобы избежать лишних потоков с вашим new Executor для каждого вызова. Утечка памяти описана в этих ссылках. Не знаю, почему вы не последовали за ними... - person Artem Bilan; 10.09.2019