Утечка памяти потребителя .NET Confluent Kafka - PullRequest
0 голосов
/ 19 ноября 2018

Мы наблюдаем огромные утечки памяти при использовании Kafka с использованием библиотеки Confluent Kafka .NET.

Одна вещь, которую я заметил, это то, что код потребляет без оператора using:

while (true)
{
    if (_consumer.Consume(out Message<string, string> message, TimeSpan.FromMilliseconds(100)))
    {
        OnMessage(message);
    }
}

Однако, хотя цикл while работает в течение всего времени жизни приложения, поэтому .Dispose () никогда не будет вызываться при использовании в любом случае. Другие потребительские экземпляры не создаются.

Поскольку код библиотеки находится на C, будут ли очищены объекты, созданные библиотекой, если мы вызовем GC.Collect (), или это неуправляемый код, над которым сборщик мусора не имеет никакого контроля?

Что-нибудь еще, что может вызвать утечку, нужно ли customer.Close () вызываться в определенные периоды или что-то в этом роде?

...