JVM是否可以同时运行多个程序?

Cod*_*lue 13 java jvm

JVM是否可以同时运行多个程序?如果是这样,怎么样?如果没有,为什么?

要运行程序,我们只需这样做

java ProgramName
Run Code Online (Sandbox Code Playgroud)

但是我们可以使用相同的JVM实例来运行另一个程序吗?

Jon*_*oni 12

答案取决于你对"程序"的定义.通常无法在同一JVM中运行具有main方法并且java NameOfClass通常开始的Java程序,因为没有内置的资源或命名空间分离.例如,如果两个程序使用同一个库的冲突版本怎么办?

我们还有用于共享JVM的应用程序,例如企业应用程序.这些程序设计为在"应用程序服务器"的上下文中运行,"应用程序服务器"基本上是用于运行其他程序的程序.应用程序服务器使用类加载器和安全管理器将应用程序资源分开.例如,两个应用程序可能使用库的冲突版本或冲突的类名,并且仍然可以共享JVM,这要归功于通过不同的类加载器加载.

  • 根据我的理解,OSGi解决了不同类加载器中罐子的分离问题. (2认同)