1

问题: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 (LISTEN)

我们还尝试运行示例程序,该程序能够看到使用新 JDK6 和 JDK7 关闭的连接(使用 TCP Viewer 分析连接)。

不明白为什么 helloworld corba 程序可以正常工作,但在我们正在做的两种情况下都不能与我们的应用程序一起工作:

orb.shutdown(true);
orb.destroy();

我们也尝试过,但它不会释放连接(其中 rootNamingContext 是 NamingContextExt 的实例):

rootNamingContext._release();
rootNamingContext = null;
System.gc();
4

1 回答 1

0

使用 tcpdump 进一步调查我们发现连接正确关闭。

于 2016-03-16T16:04:59.537 回答