【问题标题】:JVM and Java ProcessJVM 和 Java 进程
【发布时间】:2020-12-13 22:58:13
【问题描述】:

这可能是关于 Java JVM 的一个非常基本的查询。如果我使用 bash 脚本启动了 2 个单独的程序,则有 2 个进程正在运行,我可以使用 ps -ef 命令查看这些进程。

这是否意味着它们作为 2 个独立的 JVM 运行?我有这个查询,因为我可以看到两个进程的父进程 ID (PPID) 相同。

【问题讨论】:

    标签: java process jvm


    【解决方案1】:
    Does that mean they are running as 2 separate JVM's?
    

    是的。 'java' 命令启动一个 JVM。

    【讨论】:

    • PPID 告诉我们什么?相同的 PPID 不意味着这两个进程是同一进程的一部分吗?
    • PPID 是父进程 ID。意味着这两个进程具有相同的父进程,即解释脚本的 shell。 (旁白:“作为流程一部分的流程”没有任何意义)
    【解决方案2】:

    是的,两者都是作为本地操作系统进程运行的两个完全独立的 JVM。这包括垃圾收集器、JIT 编译器和所有其他常见的东西。

    每个操作系统进程都有一个父进程,如果没有别的,那么它就是“init”进程,它在操作系统启动时作为第一件事启动。

    顺便说一句。 Java 命令行工具,尤其是 jcmd 非常适合探索机器上的 java/jvm 进程——例如您只需键入jcmd 即可列出所有这些;键入jcmd <PID> help 以检查特定进程的可用命令列表。

    htop 是探索流程层次结构的另一个好工具。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      相关资源
      最近更新 更多