Netty 4.0.19.Fone Memory Leak with io.netty.channel.ChannelOutboundBuffer $ Entry

Bla*_*ain 8 java memory-leaks netty

我似乎遇到了Netty 4的重复内存问题.我的应用程序查询Minecraft服务器以获取信息并使用该信息更新数据库.目前,它每10秒创建300个连接请求,并在成功完成这些连接后发送数据包.

我的查询应用程序的上一次迭代使用了Netty 3.2.5,它在不间断运行了几个月,没有任何问题.然而,对于Netty 4,它只耗尽了几个小时才耗尽所有可用资源.以下是通过JMX连接进行内存采样的屏幕截图.

记忆采样结果

我们可以看到,io.netty.channel.ChannelOutboundBuffer$Entry正在耗尽大量内存.知道怎么去解决这个问题吗?如果你们需要,我可以提供代码.谢谢!

Stephen C:这不是"如何找到Java内存泄漏"的副本.这与Netty有关,我并不想知道如何发现内存泄漏 - 我已经发现了一个Netty.我重新发布了我的问题,以便我有机会得到答案.

Pri*_*rim 2

这可能是由于引用计数对象的错误使用(Netty 4 中引入的新原理)。您的频道未正确释放对象。

您可以使用-Dio.netty.leakDetectionLevel=paranoidNetty 激活自动内存泄漏检测。

请参阅此处的文档:http ://netty.io/wiki/reference-counted-objects.html