在同一Java虚拟机中运行的两个不同的Java程序共享什么?
关于单例类,我想到了一些事情:每个JVM只能实例化一次。这意味着如果两个不同的Java程序使用同一个类,那么它们都将访问该Singleton类的相同实例?
还有其他共享的东西吗?
最佳答案
如果多次运行java命令,则会获得JVM的多个实例。从理论上讲,它们是完全独立的,没有共享,但是JVM的某些实现(现在或过去)可能会尝试共享数据的某些部分。
我最近没有看过它,但是大约10年前,就有一个Sun JVM版本试图在JVM实例之间“共享” .class文件映像。 (这在可能同时运行数十个JVM且它们可能来来往往相当快的服务器上很有用)。
我没有回想起共享的任何其他数据,但是自那以后,可能还有更多数据或添加了其他数据。 (尽管实际上在JVM之间没有太多可以共享的东西。)
但是同样,从理论上讲,这应该都是“透明的”,并且不影响单个JVM实例的操作。
还提供了“热启动” JVM,这些JVM在最终命令之前已部分加载。这确实需要系统管理员进行一些配置,但在其他方面是透明的。