在同一个Java虚拟机中运行的两个不同的Java程序共享什么?
关于单例类,我想到了一些东西:每个JVM只能实例化一次。这意味着如果两个不同的Java程序使用一个相同的类,它们都访问该Singleton类的相同实例?
还分享了什么其他的东西?
发布于 2015-05-15 08:47:05
如果多次运行java命令,就会得到JVM的多个实例。从理论上讲,它们是完全分离的,没有任何共享,但是JVM的一些实现(现在或过去)可能会尝试共享数据的某些部分。
我最近没有看过它,但是大约10年前有一个Sun JVM版本,它会尝试在JVM实例之间“共享”.class文件镜像。(这在可能有数十个JVM同时运行的服务器上非常有用,而且它们来来去去可能相当快。)
我没有回忆起任何其他共享的数据,但可能有更多的数据,或者可能已经添加了其他数据。(尽管在JVM之间确实没有太多可以共享的东西。)
但是,从理论上讲,这一切都应该是“透明的”,不会影响单个JVM实例的操作。
还提供了在最后一个命令之前部分加载的“热启动”JVM。这确实需要系统管理员进行一些配置,但在其他方面是透明的。
https://stackoverflow.com/questions/30249512
复制相似问题