通过两个不同的命令行调用 java 涉及两个不同的 JVM 还是同一 JVM 的两个单独实例。
最佳答案
JVM即Java虚拟机,是加载类(代码)和共享对象(数据)的内存空间。 JVM相当于一个操作系统进程。
当您在命令行中键入 java...
时,您正在执行一个独立的进程,该进程将 Java 类加载到内存中,Java 的基类和您的基类(来自 .class 文件或 .jar你指出)。
另一个 java...
命令将使用自己的内存加载不同的进程,并自行加载类。
实例词混淆:当您说“同一 JVM 的两个实例”时。通常将 JVM 的实例称为单独的进程,也就是加载的独立 JVM。如果您说:两个进程正在运行 JVM 1.5,好吧,从某种意义上说,它是同一个 JVM,它是相同的版本,但它们是不同的进程,不同的“实例”,在所有意义上都是独立的。
网络应用混淆:网络应用(举例来说)只是一堆类和实例化的对象,在网络服务器中访问某个 URL。您可以用 10 个不同的应用程序启动 Tomcat - 它是 10 个不同的类和对象组,每个类和对象处理不同的请求,但实际上它们共享相同的内存空间(OS 进程)。一个 webapp 不能触及其他 webapp 的对象,因为没有人给它一个对其他对象的引用(并且类在某种程度上是隐藏的,但这是另一个故事,称为:类加载)。
关于java - JVM 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3652353/