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
The JVM has one set of System.in/out/err, one default encoding, one default locale, one set of system properties, and so on. If one application changes these, it affects all applications.
Any application that calls System.exit() kills all applications.
If one application thread goes wild, and consumes too much CPU or memory it will affect the other applications too.
# 1 楼答案
当您多次运行任何程序时,它会创建该程序的多个实例。这不是Java独有的
您的程序应该共享一个JVM,但是这意味着您应该只启动一个JVM,并告诉它要运行哪个应用程序。你是否想这样做是另一个问题。共享应用程序增加了复杂性,事实上,趋势是将单个单块变成多个微服务
拆分而不是合并JVM的一些原因
JVM内存将JAR映射到内存中,然后由操作系统而不是JVM决定进程之间是否共享JAR或如何共享JAR
然而,每个需要类的JVM都会加载它,并设置静态字段的副本
每个进程都有自己的内存空间。如果两个JVM加载同一个类,这两个副本彼此之间没有交互,也没有发生冲突的机会
# 2 楼答案
因为如果一个Java程序杀死JVM,你不希望所有的Java程序都崩溃。 是的,Java库将分别加载。但是Java程序用“import”关键字告诉JVM要加载哪些库
# 3 楼答案
理论上,一个jvm可以承载多个java应用程序,但在实际操作中可能会有很多干扰
根据文件: