JVM中共享的内容

时间:2015-05-15 00:12:47

标签: java jvm

在同一个Java虚拟机中运行的两个不同的Java程序共同共享什么?

关于单例类,我想到了一些东西:它们只能在每个JVM上实例化一次。这意味着如果两个不同的Java程序使用同一个类,它们都访问该Singleton类的同一个实例?

还分享了哪些其他内容?

2 个答案:

答案 0 :(得分:1)

如果多次运行 java 命令,则会获得JVM的多个实例。从理论上讲,它们完全是分开的,没有任何共享,但JVM的某些实现(现在或过去)可能会尝试共享数据的某些部分。

我最近没有看过它,但大约10年前,有一个版本的Sun JVM试图分享#34; JVM实例之间的.class文件映像。 (这应该对那些可能同时运行数十个JVM的服务器很有用,而且它们可能来得非常快。)

我没有回忆任何其他共享的数据,但可能已经有更多或其他数据被添加。 (虽然JVM之间没有其他可以共享的东西。)

但同样,从理论上讲,这应该都是透明的#34;并且不会影响单个JVM实例的操作。

还有一项关于"热情开始"在最终命令之前部分加载的JVM。这确实需要系统管理员的一些配置,但在其他方面是透明的。

答案 1 :(得分:0)

在同一个JVM中运行的两个或多个程序共享所有内容。关于单例,当正确编写时,将有一个类的单个实例,可以被所有其他对象访问。