每当我们启动Java程序时:
java Herpyl.java -derp
这是在另一个JVM实例上创建另一个 JVM实例还是另一个Java进程?我对JVM和“Java”或“Java进程”之间的关系感到困惑。提前谢谢!
答案 0 :(得分:6)
每次java调用都会启动自己的JVM。
在进程之间共享一个JVM具有安全性和稳定性方面的问题:如果一个进程杀死了JVM,那么您也杀死了另一个进程,而另一个进程实际上应该无法在没有正确权限的情况下读取/修改其他进程的数据(别忘了你可以从java进程中调用任意JNI代码)。
如果你担心内存消耗:是的确确增加了内存,但任何现代操作系统都会映射不同的dll和其他东西 - 在我的win7 x64机器上,一个空闲的javaw进程有一个~300kb的私有工作集。 / p>
答案 1 :(得分:2)
java工具启动Java应用程序。这是通过开始一个 Java运行时环境,加载指定的类,并调用它 阶级的主要方法
Java Runtime Environment包括Java虚拟机和执行Java应用程序所需的其他组件(如库)。