下面的程序会使用 2 个不同的 JVM 吗?一个用于主程序,另一个用于 Sample.jar
程序?
public class Hello {
public static void main(String args[]) throws Exception {
Thread.sleep(5000);
System.out.println("will exec now");
Process p = Runtime.getRuntime().exec("java -jar Sample.jar");
while (p.isAlive()) {
Thread.sleep(5000);
System.out.println("still alive");
}
System.out.println("Done !!");
}
}
最佳答案
One for main program and one for Sample.jar program?
是的,java
工具( *nix docs 、 Windows docs )启动 JVM 的新实例,与正在运行的实例完全无关1,就像您直接运行它一样,而不是通过 Java 代码。
事实上,如果您在计算机上安装了多个版本(例如 Java 9 和 Java 10)并且在其中一个实例中运行此代码(例如 Java 9),那么这两个 JVM 实例甚至可能是不同的版本但您调用的 java
工具适用于另一个工具(例如 Java 10)。但即使版本相同,这两个实例也完全不相关。
1(除了一个进程是另一个进程的父进程之外)
关于java - 从另一个程序触发java程序会使用相同的JVM还是会使用不同的JVM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54386617/