問題 : ORB.destroy() が正しくクリーンアップされず、ORB オブジェクト インスタンスがガベージ コレクションされません。
この問題は JDK5 で発生し、http://bugs.java.com/view_bug.do?bug_id=6354718 に記載されている以降のリリースで修正されまし た。私たちはJDK7を使用していますが、ファイル記述子が接続用に開かれており、OS FBの制限を増やした即時の回避策としてリリースされていません(しかし、いつか再びこの問題が発生します)。
すべての接続について、コマンド「lsof -p process-id」を使用してこれを以下に示します
コマンド PID ユーザー FD タイプ デバイス サイズ/オフ ノード名
java 14674 xyz 106u IPv6 xyz 0t0 TCP *:xyz (リッスン)
また、新しいJDK6およびJDK7で接続が閉じられていることを確認できるサンプルプログラムを実行しようとしました(TCP Viewerを使用して接続を分析しました)。
実行している両方のケースで、helloworld corba プログラムが正しく動作するのに、アプリケーションでは動作しない理由がわかりません。
orb.shutdown(true);
orb.destroy();
私たちも試してみましたが、接続を解放しません (rootNamingContext は NamingContextExt のインスタンスです):
rootNamingContext._release();
rootNamingContext = null;
System.gc();