<分区>
谁能告诉我如果我们在一台机器上运行多个java程序为什么会创建多个实例?为什么所有程序不能共享一个 jvm,Java 库会单独加载到所有 jvm 实例吗?
<分区>
谁能告诉我如果我们在一台机器上运行多个java程序为什么会创建多个实例?为什么所有程序不能共享一个 jvm,Java 库会单独加载到所有 jvm 实例吗?
最佳答案
Can anyone please tell me why multiple instances will be created if we run multiple java programs in a single machine?
当您多次运行任何程序时,它会创建该程序的多个实例。这不是 Java 独有的。
Why can't all programs share a single jvm
您的程序应该共享一个 JVM,但这意味着您应该只启动一个 JVM 并告诉它运行哪个应用程序。你是否想这样做是另一个问题。共享应用程序增加了复杂性,事实上,趋势是将单个单体变成多个微服务
拆分而不是合并 JVM 的一些原因。
and will java libraries load separately to all jvm instances?
JVM 内存将 JAR 映射到内存中,然后由操作系统而不是 JVM 决定是否或如何在进程之间共享 JAR。
但是,每个需要类的 JVM 都会加载它并设置它的静态字段副本。
i mean to say how does jvm loads common libraries in memory because if two jvm loads same classes in memory then there might be conflict while accessing that class object
每个进程都有自己的内存空间。如果两个 JVM 加载同一个类,这两个副本之间没有交互,也不存在冲突的机会。
关于java - 为什么会创建多个jvm实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39976419/