当使用合流的kafka.net库从kafka中消费时,我们看到了巨大的内存泄漏。
我注意到的一点是,代码不使用using语句:
while (true)
{
if (_consumer.Consume(out Message<string, string> message, TimeSpan.FromMilliseconds(100)))
{
OnMessage(message);
}
}
但是,while循环将在应用程序的生存期内运行,因此无论如何,在使用时都不会调用.dispose()。不会创建其他使用者示例。
由于库后面的代码是c语言,如果我们调用gc.collect(),库创建的对象是否会被清除,或者这是垃圾收集器无法控制的非托管代码?
任何其他可能导致泄漏的因素,是否需要在特定时间段或类似时间段调用consumer.close()?
暂无答案!
目前还没有任何答案,快来回答吧!