【发布时间】:2012-02-06 04:42:58
【问题描述】:
我在互联网上做了一些阅读,有人说 Java 应用程序是由 Java 虚拟机 (JVM) 执行的。 “执行”这个词让我有点困惑。据我所知,操作系统可以执行非 Java 应用程序(即:用 C、C++... 编写)。在较低级别,这意味着操作系统将二进制程序加载到内存中,然后指示 CPU 执行内存中的指令。
那么现在有了 JVM,会发生什么?据我所知,JVM(包含运行时环境)将首先由操作系统调用。从那时起,JVM 将为应用程序生成一个(或多个)线程。我想知道操作系统的作用是否会再发挥作用?在我看来,JVM 已经“绕过”了操作系统并直接指示 CPU 执行应用程序。如果是这样,我们为什么需要操作系统?
再进一步,JVM 将使用其 JIT 将应用程序的字节码编译成机器码,然后执行这些机器码。既然已经是机器码了,还需要JVM吗?因为操作系统可以代替 JVM 来指示 CPU 执行这些机器代码。我在这里有什么错误吗?
我想从这里的人那里学到更多。如果我错了,请纠正我。非常感谢!
【问题讨论】:
-
不要忘记,即使所有内容都经过 JIT 处理,您仍然需要 JVM,因为 JVM 会清理内存并压缩堆等等。
标签: java operating-system jvm cpu