我们的 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 路径现在在机器中不存在。
有人可以向我解释一下这种行为吗?
这是 Unix/Linux 处理打开文件的方式。旧版本的卸载要求操作系统取消文件链接。然而,它们仍然开放(可以用
lsof
显示),因此仍然被认为是有效的。一旦关闭所有打开的文件句柄,这些文件将被“永久”删除。更多信息可以在这里找到。