2017-02-17 93 views
3

如果我在物理机器上启动Java应用程序,然后启动第二个Java应用程序,第三个应用程序......等等。Java虚拟机:共享还是拥有它自己的每个应用程序?

是否每次都是新的Java虚拟机启动。这样每个应用程序都有它自己的JVM?

或者是分配给物理机操作系统放大的第一个JVM的内存,并且所有应用程序都在一个JVM中运行? 这样总会只有一个JVM。

+0

看到此:http://stackoverflow.com/questions/20307500/how-many-java-virtual-machine-extst-on-computer?rq=1 – zed

+0

请参阅[这里](http://stackoverflow.com/questions/5947207/is-there-one-jvm-per-java-application),同样的问题已经被问过。 – theasianpianist

回答

-1

每次启动新的Java应用程序时,都会创建一个新的JVM实例。应用程序在此JVM实例中运行。

2

实际上当你“启动一个应用程序”时,你正在做的是启动一个新的JVM并告诉它通过命令行参数执行一个类。

但是,在servlet容器中执行的Web应用程序中,每个应用程序都有它自己的类加载器,因此它们不会共享静态变量的内容。这可能会给你一个印象,即每个JVM都运行在不同的JVM上。

2

JVM - JRE的实例。当你运行应用程序时 - 新的JVM被初始化。应用程序完成后 - 实例被垃圾收集器删除。

相关问题