2 つのサーバー プロセスがあり、2 つのソケット接続で通信します。どちらの接続もメッセージを一方向にのみ送信しています (1 つは c->s 用、もう 1 つは s->c 用)。
サーバーとクライアントのブートストラップは、それぞれ OioServerSocketChannelFactory / OioClientSocketChannelFactory で初期化されます。
いくつかのプロファイリングの後、これら 3 つのクラスのオブジェクトが解放されないことがわかりました (両側で)。これらのクラスを直接使用することはなく、2 つの 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