每当我们启动Java程序时:
java Herpyl.java -derp
Run Code Online (Sandbox Code Playgroud)
这是在同一个JVM实例上创建另一个JVM实例还是另一个Java进程?我对JVM和"Java"或"Java进程"之间的关系感到困惑.提前致谢!
每次java调用都会启动自己的JVM.
在进程之间共享一个JVM具有安全性和稳定性方面的问题:如果一个进程杀死了JVM,那么您也杀死了另一个进程,而另一个进程实际上应该无法在没有正确权限的情况下读取/修改其他进程的数据(不要忘记你可以从你的java进程调用任意JNI代码).
如果你担心内存消耗:是的确确增加了内存,但任何现代操作系统都会映射不同的dll和其他东西 - 在我的win7 x64机器上,一个空闲的javaw进程有一个~300kb的私有工作集.