调用java是创建新的JVM实例还是只创建另一个Java进程?

IAm*_*aja 4 java jvm

每当我们启动Java程序时:

java Herpyl.java -derp
Run Code Online (Sandbox Code Playgroud)

这是在同一个JVM实例上创建另一个JVM实例还是另一个Java进程?我对JVM和"Java"或"Java进程"之间的关系感到困惑.提前致谢!

Voo*_*Voo 6

每次java调用都会启动自己的JVM.

在进程之间共享一个JVM具有安全性和稳定性方面的问题:如果一个进程杀死了JVM,那么您也杀死了另一个进程,而另一个进程实际上应该无法在没有正确权限的情况下读取/修改其他进程的数据(不要忘记你可以从你的java进程调用任意JNI代码).

如果你担心内存消耗:是的确确增加了内存,但任何现代操作系统都会映射不同的dll和其他东西 - 在我的win7 x64机器上,一个空闲的javaw进程有一个~300kb的私有工作集.