Утечка памяти потребителя.NET Confluent Kafka
Мы наблюдаем огромные утечки памяти при использовании Kafka с использованием библиотеки Confluent Kafka .NET.
Одна вещь, которую я заметил, это то, что код потребляет без использования оператора:
while (true)
{
if (_consumer.Consume(out Message<string, string> message, TimeSpan.FromMilliseconds(100)))
{
OnMessage(message);
}
}
Тем не менее, цикл while работает в течение всего времени жизни приложения, поэтому.Dispose() никогда не будет вызываться во время использования. Другие потребительские экземпляры не создаются.
Поскольку код библиотеки находится на C, будут ли очищены объекты, созданные библиотекой, если мы вызовем GC.Collect(), или этот неуправляемый код не контролируется сборщиком мусора?
Потребуется ли что-нибудь еще, что может вызвать утечку, нужно ли в определенные периоды вызывать customer.Close() или что-то в этом роде?