Java 为每个应用程序创建的每个jvm是线程还是进程

Java 为每个应用程序创建的每个jvm是线程还是进程,java,multithreading,process,jvm,Java,Multithreading,Process,Jvm,一个新的JVM实例分配给用户开始使用jre的每个应用程序。这个JVM是一个新的进程还是线程?为什么 这个JVM是一个新的进程还是线程 一个过程 为什么? a) 因为这就是“现代”操作系统的工作方式 b) 因为如果JVM是线程(在一个更大的进程中),那么不同的JVM将能够以不可能完全控制的方式相互干扰 c) 因为试图解决b)将很困难,而且很可能会对性能产生重大影响。JVM相当于一个操作系统进程。JVM是Java虚拟机。它是一个加载类和共享对象的内存空间。 这是一个过程……如果JVM是一个线程,那么

一个新的JVM实例分配给用户开始使用jre的每个应用程序。这个JVM是一个新的进程还是线程?为什么

这个JVM是一个新的进程还是线程

一个过程

为什么?

a) 因为这就是“现代”操作系统的工作方式

b) 因为如果JVM是线程(在一个更大的进程中),那么不同的JVM将能够以不可能完全控制的方式相互干扰


c) 因为试图解决b)将很困难,而且很可能会对性能产生重大影响。

JVM相当于一个操作系统进程。JVM是Java虚拟机。它是一个加载类和共享对象的内存空间。
这是一个过程……

如果JVM是一个线程,那么JVM如何管理所有这些I/O控制、线程控制和控制在JVM下运行的应用程序(谁应该启动JVM?)。
线程没有单独的地址空间,在共享内存空间中运行。线程被设计用于执行小任务,而用繁重的任务加载它会导致一种不受伤害的情况(从操作系统的角度来看)。线程可以很容易地通信,而IPC是相当资源密集型的。我们每天都在安装软件,我们在创建过程

与其说JVM等同于进程,不如说它在进程中运行。这是否意味着系统中的两个JVM不共享任何内容?甚至元空间(字符串池、类数据)都不存在?这或多或少是正确的。(它们可以共享Java可执行文件和共享(本机)库中的代码段。)