我似乎遇到了Netty 4的重复内存问题。我的应用程序向Minecraft服务器查询信息并使用该信息更新数据库。目前,它每10秒创建300个连接请求,并在成功完成这些连接后发送数据包。
我的查询应用程序的上一次迭代使用了Netty 3.2.5,它在不间断运行了几个月,没有任何问题。然而,对于Netty 4,它只耗尽了几个小时才耗尽所有可用资源。以下是通过JMX连接进行内存采样的屏幕截图。
正如我们所看到的,io.netty.channel.ChannelOutboundBuffer$Entry
占用了大量内存。知道怎么去解决这个问题吗?如果你们需要,我可以提供代码。谢谢!
Stephen C:这不是"如何找到Java内存泄漏的重复"。这与Netty有关,我并没有试图找出如何发现内存泄漏 - 我已经发现了一个Netty。我重新发布了我的问题,以便我有机会得到答案。
答案 0 :(得分:2)
这可能是由于引用计数对象的错误使用(Netty 4中引入的新原则)。您的频道未正确释放对象。
您可以使用-Dio.netty.leakDetectionLevel=paranoid
在Netty中激活自动内存泄漏检测。
请参阅此处的文档:http://netty.io/wiki/reference-counted-objects.html