什么导致netty内存泄漏

时间:2012-09-02 15:39:57

标签: netty

我有两个服务器进程,它们与两个套接字连接进行通信。两个连接都只是单向发送消息。(一个用于c-> s,一个用于s-> c)。

分别使用OioServerSocketChannelFactory / OioClientSocketChannelFactory初始化服务器和客户端引导程序。

经过一些剖析,发现这三个类的对象永远不会释放(两侧)。我没有直接使用这些类,我只保留对两个Channel对象的引用。

java.util.concurrent.LinkedTransferQueue$Node 1005351 32171232  
org.jboss.netty.channel.Channels$2 1005351 24128424  
org.jboss.netty.channel.socket.ChannelRunnableWrapper 1005351 48256848  

我的代码中泄漏了哪种对象可能导致这些对象无法释放?

更新:环境,jdk7u7,centos6 64bit,netty 3.5.3

2 个答案:

答案 0 :(得分:3)

这是因为Netty Oio impl中的一个错误。该错误是作为3.5.4.Final的一部分修复的。所以请升级到3.5.4.Final或3.5.5.Final。

见[1]。

[1] https://github.com/netty/netty/issues/520

答案 1 :(得分:0)

这是一个很好的机会,这是一个netty的错误。在我将OioServerSocketChannelFactory / OioClientSocketChannelFactory更改为NioServerSocketChannelFactory / NioClientSocketChannelFactory之后,问题就消失了。