【发布时间】:2020-12-13 22:58:13
【问题描述】:
这可能是关于 Java JVM 的一个非常基本的查询。如果我使用 bash 脚本启动了 2 个单独的程序,则有 2 个进程正在运行,我可以使用 ps -ef 命令查看这些进程。
这是否意味着它们作为 2 个独立的 JVM 运行?我有这个查询,因为我可以看到两个进程的父进程 ID (PPID) 相同。
【问题讨论】:
这可能是关于 Java JVM 的一个非常基本的查询。如果我使用 bash 脚本启动了 2 个单独的程序,则有 2 个进程正在运行,我可以使用 ps -ef 命令查看这些进程。
这是否意味着它们作为 2 个独立的 JVM 运行?我有这个查询,因为我可以看到两个进程的父进程 ID (PPID) 相同。
【问题讨论】:
Does that mean they are running as 2 separate JVM's?
是的。 'java' 命令启动一个 JVM。
【讨论】:
是的,两者都是作为本地操作系统进程运行的两个完全独立的 JVM。这包括垃圾收集器、JIT 编译器和所有其他常见的东西。
每个操作系统进程都有一个父进程,如果没有别的,那么它就是“init”进程,它在操作系统启动时作为第一件事启动。
顺便说一句。 Java 命令行工具,尤其是 jcmd 非常适合探索机器上的 java/jvm 进程——例如您只需键入jcmd 即可列出所有这些;键入jcmd <PID> help 以检查特定进程的可用命令列表。
htop 是探索流程层次结构的另一个好工具。
【讨论】: