たとえば、呼び出してソケットを開いたり閉じたりすると
Socket s = new Socket( ... );
s.setReuseAddress(true);
in = s.getInputStream();
...
in.close();
s.close();
Linux は、このソケットがまだ開いているか、少なくとも接続用のファイル記述子が存在すると述べています。このプロセスの開いているファイルを lsof で照会すると、閉じられた接続のエントリがあります。
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
java 9268 user 5u sock 0,4 93417 can't identify protocol
このエントリは、プログラムが終了するまで残ります。最終的にソケットを閉じる他の方法はありますか? Java アプリケーションが多くのファイル記述子をブロックするのではないかと少し心配しています。これは可能ですか?または、ReuseAdress が設定されていても、Java はこれらのソケットを再利用するために保持しますか?