问题:ORB.destroy()没有正确清理,ORB对象实例也没有被垃圾回收。
此问题是在JDK5中引发的,并在此处记录的后续版本中得到修复 http://bugs.java.com/view_bug.do?bug_id=6354718。我们正在使用JDK7,仍然看到文件描述符是开放的连接,并且永远不会发布作为一个直接的解决方法,我们增加了操作系统FB限制(但有一天后,这个问题将再次触及我们)。
对于我们在下面通过使用命令“lsof -p process-id”
看到的每个连接命令PID用户FD类型设备大小/关闭节点名称
java 14674 xyz 106u IPv6 xyz 0t0 TCP *:xyz(LISTEN)
我们还尝试使用能够看到新JDK6和JDK7(使用TCP Viewer分析连接)关闭连接的示例程序。
不明白为什么helloworld corba程序正常工作,但在我们正在做的两种情况下都不能用于我们的应用程序:
orb.shutdown(true);
orb.destroy();
我们也尝试过,但它没有释放连接(其中rootNamingContext是NamingContextExt的实例):
rootNamingContext._release();
rootNamingContext = null;
System.gc();
答案 0 :(得分:0)
使用tcpdump进一步调查此问题,我们发现连接正确关闭。