每当我们启动 Java 程序时:
java Herpyl.java -derp
这是在创建另一个 JVM 实例,还是在同一个 JVM 实例之上创建另一个 Java 进程?我对 JVM 和“Java”或“Java 进程”之间的关系感到困惑。提前致谢!
最佳答案
每个 java 调用都会启动自己的 JVM。
在进程之间共享一个 JVM 存在安全性和稳定性方面的问题:如果一个进程杀死了 JVM,你也杀死了另一个进程,如果没有正确的权限,另一个进程真的不应该能够读取/修改另一个进程的数据(不要忘记您可以从您的 Java 进程中调用任意 JNI 代码)。
如果您担心内存消耗:是的,这确实会增加内存,但任何现代操作系统都会映射不同的 dll 和其他东西 - 在我的 win7 x64 机器上,一个空闲的 javaw 进程有一个大约 300kb 的私有(private)工作集。
关于java - 调用 java 是创建新的 JVM 实例还是另一个 Java 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10360044/