JVM实例

Jav*_*ser 10 java jvm

通过两个不同的命令行调用java涉及两个不同的JVM或两个相同JVM的独立实例.

hel*_*ios 23

JVM是Java虚拟机,它是一个存储空间,其中加载了类(代码)并共享了对象(数据).JVM等同于操作系统进程.

当您键入java...命令行时,您正在执行一个独立的进程,该进程在内存中加载Java类,Java和您的基类(来自您指定的.class文件或.jar).

另一个java...命令将使用自己的内存加载不同的进程,并自行加载类.

实例字混淆:当你说'同一个JVM的两个实例'时.通常将JVM的实例称为单独的进程,它是一个加载的独立JVM.如果你说:两个进程正在运行JVM 1.5,那么,它是相同的JVM,它是相同的版本,但它们是不同的进程,不同的"实例",在所有意义上都是独立的.

Webapp混淆:一个webapp(通过示例)只是一组实例化的类和对象,参与Web服务器中的某些URL.您可以使用10个不同的应用程序启动Tomcat - 即10个不同的类和对象,每个类都参与不同的请求,但实际上它们共享相同的内存空间(操作系统进程).webapp无法触及其他webapp的对象,因为没有人给它引用其他对象(并且类在某种程度上是隐藏的,但这是另一个故事:class-loading).