每个 Java 应用程序是否有一个 JVM?

2022-08-31 10:23:05

是否所有运行的 Java 应用程序都使用相同的 JVM,或者“每个 Java 应用程序一个 JVM”是否适用?(假设应用程序是IntelliJ IDEA,例如服务器和NetBeans)

此外,分配的 JVM 与每个 Java 应用程序使用的进程之间是否存在任何连接?


答案 1

一般来说,每个应用程序都会有自己的JVM实例和自己的OS级进程,每个JVM实例都是相互独立的。

有一些实现细节,例如类数据共享,其中多个JVM实例可能共享一些数据/内存,但这些实例对应用程序没有用户可见的影响(除了改进的启动时间,希望如此)。

然而,一个常见的场景是单个应用程序服务器(或“Web服务器”),例如Glassfish或Tomcat运行多个Web应用程序。在这种情况下,多个 Web 应用程序可以共享一个 JVM。


答案 2

每个 Java 应用程序都有一个 JVM。它们之间不应该有任何连接,除非你建立一个连接,例如网络。如果您在 IDE 中工作,则编写的代码通常在单独的 JVM 中运行。IDE 通常会连接单独的 JVM 进行调试。如果您正在处理多个Web应用程序,如果将它们部署到同一个Web容器,则可以共享相同的JVM。


推荐