1

我们在我们的 linux 机器上使用 jdk 1.6 运行了 java 进程(cassandra 服务),我们确实使用 rpm 包将机器中的 JDK 从 1.6 升级到 1.7 而不停止进程(/usr/bin/jdk1.6/bin/java)它们与早期版本的 java 一起运行。

升级成功后,旧版本的jdk从机器中移除,只有新版本(1.7)可用,但之前使用旧版本(1.6)运行的进程不受影响,仍然从旧路径运行. 尽管现在机器中不存在该进程显示的旧 java 路径。

有人可以解释一下这种行为吗?

4

1 回答 1

1

这是 Unix/Linux 处理打开文件的方式。旧版本的卸载要求操作系统取消链接文件。然而,它们仍然是开放的(这可以用 显示lsof),所以仍然被认为是有效的。一旦所有打开的文件句柄都关闭,这些文件将被“永久”删除。更多信息可以在这里找到

于 2013-09-14T01:51:40.457 回答