问题:ORB.destroy()无法正确清理,并且未对垃圾桶对象实例进行垃圾回收。
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();
最佳答案
使用tcpdump进行进一步调查,我们发现连接正确关闭。
关于java - ORB.destroy()无法正确清理,并且ORB对象实例未被垃圾回收,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35936212/