を持っているようだ。何が起こるコードスニペットは、コードスニペットがあるバグ
final ChannelFuture f = ctx.writeAndFlush(time);
f.addListener(new ChannelFutureListener() {
public void operationComplete(ChannelFuture future) {
assert f == future;
ctx.close();
}
});
"であれば、最終的なChannelFutureのF = ctx.writeAndFlush(時間); 'は次のaddListener
コードがまだ開始しないように非常に高速に実行されます。 最初のコード行が完了すると、スレッドはすべてのリスナーに操作が完了したことを通知しますが、その時点ではリスナーはまったくありません。 その後、新しいリスナーが追加されますが、これ以上の通知は受信されません。
コードソース:http://netty.io/wiki/user-guide-for-5.x.html
ユーザーが少なくとも1つのリスナーを追加するのを忘れた場合、OutOfMemoryErrorが発生しますか? –
未来はガーベージ・コレクションが不可能で、状態はかなり小さいので、コレクションなどで先物を隠すことをやめない限り、OOMは起こりそうもないと言います。 – Nicholas
しかし、この説明はまだ何とか私を納得させることができませんでした。あなたはソースコードを参考にしましたか? ChannelFutureはリスナーがいつ追加されるかを知らず、あなたの説明に従ってリスナーを待っているので、gc目的のために将来の結果をいつリリースするべきかも知らない。 –