Существует приложение KafkaStreams
(kafka-streams версия 2.4.0), которое подписывается и отписывается от topi c во время выполнения. Во время отмены подписки KafkaStrams
закрывается с:
KafkaStreams.close();
KafkaStreams.cleanUp();
Но даже закрытое такое KafkaStream
не имеет права на G C, и после некоторого периода времени и количества отписок приложение вылетает с OOM.
Анализ Heapdump показал, что эти потоки находятся в состоянии завершения - ERROR
, PENDING_SHUTDOWN
, NOT_RUNNING
имеют G C root в JmxMBeanServer
с JmxReported.KafkaMbean
, сохраненным там.
Ожидается ли, что некоторые метрики останутся после завершения потока внутри JmxMBeanServer
, и если да, то как их очистить, чтобы KafkaStreams
объекты G C соответствовали требованиям?