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

标签 java jvm

每当我们启动 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/

相关文章:

java - Java 1.8 堆栈溢出错误

Tomcat jvm 选项

java - 为什么 while() 能创造魔力?

java - Kruskal 与堆或排序算法

java - 子弹没有在我的宇宙飞船 Sprite 旁边射击(LIbgdx)

java构造函数行为继承和静态/动态绑定(bind)

java - 在 JTextPane java swing 中填充行的矩形后无法与 View 同步

java - 监控 Java 应用程序自己的内存使用情况

java - Sun JVM (JRE jre1.6.0_24) 段错误 NET_Read

java - 关于 HotSpot JVM JIT 的困惑