【发布时间】:2021-04-01 01:31:24
【问题描述】:
我有这个简单的 java 命令行应用程序
public static void main(String[] args) throws IOException {
System.out.println("Hello World !");
System.in.read();
}
当我在 Windows 10 上启动它时,Windows 任务管理器显示两个 java.exe 实例作为 Windows 命令提示符进程的子进程:
- Java(TM) Platform SE 二进制来自
C:\Program Files\Common 文件\Oracle\Java\javapath_target_383000\java.exe
- OpenJDK 平台二进制文件来自
C:\Program Files\Java\jdk-15.0.1\bin\java.exe
人们应该认为一个JVM实例应该足以运行这个程序,那么为什么会有两个呢?
编辑:我针对 JDK 1.8.0(而不是 JDK 15.0.1)编译了这个程序,现在只显示 Java(TM) Platform SE 二进制文件。
【问题讨论】:
-
它们很可能是运行两个不同 Java 程序的两个不同的运行 Java 进程!
-
@Seelenvirtuose : 不 - 因为当程序退出时,它们都消失了
-
是的,因为一个Java程序只能在一个Java进程中运行!所以它必须是别的东西。你的假设是错误的!
-
这个 Windows 命令 shell 中肯定只有一个 Java 程序在运行
-
where java打印什么?也许 javapath_target_383000 版本是一个不必要的包装器,它会启动另一个。
标签: java jvm windows-10