在同一个Java虚拟机中运行的两个不同的Java程序共同共享什么?
关于单例类,我想到了一些东西:它们只能在每个JVM上实例化一次。这意味着如果两个不同的Java程序使用同一个类,它们都访问该Singleton类的同一个实例?
还分享了哪些其他内容?
答案 0 :(得分:1)
如果多次运行 java 命令,则会获得JVM的多个实例。从理论上讲,它们完全是分开的,没有任何共享,但JVM的某些实现(现在或过去)可能会尝试共享数据的某些部分。
我最近没有看过它,但大约10年前,有一个版本的Sun JVM试图分享#34; JVM实例之间的.class文件映像。 (这应该对那些可能同时运行数十个JVM的服务器很有用,而且它们可能来得非常快。)
我没有回忆任何其他共享的数据,但可能已经有更多或其他数据被添加。 (虽然JVM之间没有其他可以共享的东西。)
但同样,从理论上讲,这应该都是透明的#34;并且不会影响单个JVM实例的操作。
还有一项关于"热情开始"在最终命令之前部分加载的JVM。这确实需要系统管理员的一些配置,但在其他方面是透明的。
答案 1 :(得分:0)
在同一个JVM中运行的两个或多个程序共享所有内容。关于单例,当正确编写时,将有一个类的单个实例,可以被所有其他对象访问。