0

我有两个服务器进程,它们通过两个套接字连接进行通信。两个连接都只能单向发送消息。(一个用于 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

4

2 回答 2

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

于 2012-09-03T05:23:07.300 回答
0

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

于 2012-09-03T02:24:33.103 回答