我想知道如果我在Debian机器上更新JDK,运行Java进程会发生什么。答案可能对其他系统也是一样的,我只是想更明确地说明我的环境。
更新意味着新的JDK将安装在现有的JDK旁边,符号链接/usr/lib/jvm/default-java
将更改为新JDK的文件夹。
更新后的文件夹结构:
/usr/lib/jvm/default-java
->/usr/lib/jvm/jdk1.7.0_79
/usr/lib/jvm/jdk1.7.0_21 # old version
个/usr/lib/jvm/jdk1.7.0_79 # new version
个
正在运行的进程是否会受到此更改的影响?
2条答案
按热度按时间edqdpe6u1#
正在运行的进程是从真实的JVM可执行文件中运行的,而不是从符号链接中运行的。
因此,它们将继续运行,但在您重新启动它们之前,它们不会切换到您刚刚安装的新JVM版本。
uqdfh47h2#
我们在JDK更新后遇到了一个巨大的问题:
更新已自动安装
yum-cron
(CentOS)。但它已删除旧的JDK安装(1.8.0.382 -> 1.8.0.392)。服务器上有超过100个JVM在运行旧版本。更新删除了可执行文件和标准JAR。因此JVM运行,但如果它们需要从删除的JAR中创建新类,(由类加载器加载),它们将抛出异常:字符串
在JVM重新启动之前,许多功能不再可用。
型
最好将Java排除在自动更新之外。