JVM和Java Linux进程

8

这个问题涉及到 Java JVM 的基础知识。如果我有一个 Java 独立程序,并且在服务器上有 5 个此程序的进程正在运行,那么我们可以说这 5 个 Java 进程在 5 个 JVM 中运行吗?

这里的进程指的是 Linux 进程。如果我执行 ps -ef |grep java 命令,就会看到 5 个 Java 进程出现。


http://code.google.com/p/jvmtop/ 显示所有的JVM。 - MRalwasser
3个回答

12

是的,没错。每个java进程都有一个JVM。


我们可以说Java进程的数量等于所有情况下正在运行的JVM数量吗? - Gnanam
2
在正常的Linux设置中,如您的问题所述。有可能尝试在一个进程中使用多个JVM的解决方案。例如,请参阅这篇(旧)文章 - Matthew Flaschen

5
您可以运行jps命令(如果它不在您的路径中,则从JDK的bin文件夹中运行)来查找正在计算机上运行的Java进程(JVMs)。

1
@Gnanam:在另一种情况下,你会发现jps命令非常有用。通常它被用来查找Java进程的进程ID,可以将其传递给诸如VisualVM(使用jvisualvm命令调用)或jhat实用程序之类的应用程序以进行堆转储。 - CruiZen
1
再次感谢您让我知道另一个堆分析工具jhat的存在。 - Gnanam

0

这取决于JVM和本地库。您可能会在ps中看到带有不同PID的JVM线程。一般来说,子进程的父进程将是作为线程的Java进程。

不能确定Linux java进程的数量等于实例化的JVM数量。


1
在Linux上,JVM使用真正的本地线程,它们与进程类似。但是,它们并不是同一回事,因为只有进程拥有自己的地址空间。 - Matthew Flaschen
我正在回应你的最后一段。我认为无论 ps 输出如何,你都可以确定地说(进程数 确实等于 JVM 数),毫无疑问。 - Matthew Flaschen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接