有多少 JVM 在 main 中调用 main

How many JVM calling main inside main

class B {
    public static void main(String[] args) {
        
    }
}
class A {
    public static void main(String[] args) {
        B.main(args);
    }
}

在上面的流程中,我的 init 方法是 A.main 依次调用 B.main.

  1. 我知道调用 A.main 会产生一个 JVM。在 A.main 中调用 B.main 会产生另一个 JVM 吗? 或者
  2. B.main 是 JUST 另一个静态方法,一旦 JVM 在 A.main 作为初始化函数启动。

选项2.mains只是每个class的静态方法,从A调用B.main(args)时只有一个JVM是运行。

您还可以在 JUNIT 测试中使用它来帮助检查命令行启动行为是否符合预期,例如

@Test void coverage() {
   A.main(new String[] { "a","b" }); // or B.main
   // assertions here if there is some output state you could check
}