问题: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/

10-17 00:02