gpt4 book ai didi

java - 当你运行java字节码时操作系统会做什么?它如何与 JVM 交互?

转载 作者:行者123 更新时间:2023-12-02 09:34:34 25 4
gpt4 key购买 nike

我在空闲时间一直在研究操作系统,但我对它如何与 Java 和 JVM 一起工作感到困惑。

一些问题当使用像 java file.class:

这样的命令运行 java 字节码时
  1. 我了解 JVM 会优化并解释或执行程序的 JIT
  2. JVM 如何获取 CPU 分配来在多线程应用程序中执行这些操作?

我的假设:在此应用程序的每个线程中,它们都使用相同的每进程 JVM 来执行这些任务。 (这是正确的吗?)

操作系统与JVM的作用是什么,它们有什么交互?

最佳答案

Image showing stack of User layer accessing Application layer built on top of Operating System layer built on top of Hardware layer.

( image from Wikipedia )

JVM 只是一个应用程序

Java Virtual Machine (JVM)OpenJDK中所示项目只是另一个应用程序,通常编写为 CC++ ,有时written in Java .

从主机操作系统的角度来看,运行 JVM 就像运行文字处理器、电子表格或 Web 浏览器一样。所有这些应用程序都很大,消耗大量内存并生成线程。

正如有人评论的那样,从技术上讲,JVM 是符合 official specifications 的任何软件和/或硬件。 。事实上,已经有人尝试构建知道如何执行 Java butecode 的硬件芯片(参见 Jazelleothers ),但据我所知,他们没有成功。在今天的实践中,我们从 Oracle 下载 JVM。或AdoptOpenJDKother distributors是在 Mac、BSD、Linux、Windows、AIX、Solaris 或类似计算机上像任何其他应用程序一样运行的 C/C++ 应用程序

I understand that JVM optimize and interpret or perform JIT of the program

HyperCard Apple 的一款老式软件与 Java 类似,它也通过带有 JIT 的解释器在内部执行代码,因此重复运行相同的代码块会突然运行得更快。从 Mac 操作系统的角度来看,HyperCard 也只是另一个应用程序。

How does the JVM get CPU allocation for doing these in a multi-threaded application?

作者:scheduling threadsCPU cores和其他的一样app 。字处理器使用线程在后台写入存储并在后台重新呈现文档。 Web 浏览器可能会分配线程来处理单独窗口/选项卡中的每个网页。

In each thread of this application, they all use the same per-process JVM to perform these tasks. (Is this correct?)

是的,使用 OpenJDK,您将看到一个 process在您的OS上对于 JVM。在该 JVM 中运行的所有 Java 应用程序的所有线程都位于该单个操作系统进程中。然而,正如有人评论的那样,这些只是 implementation details 。人们可以自由地以他们选择的任何方式实现他们认为合适的 JVM,只要他们遵守 Java specifications .

查看源代码

OpenJDK是开源的。所以如果你真的很好奇,peruse that source code 。请注意,您将找到特定于每个操作系统的代码区域,例如 macOSLinuxMS Windows ,在每种 CPU 类型上,例如 x86ARMSPARC或类似的情况,JVM 与主机交互 OS .

关于java - 当你运行java字节码时操作系统会做什么?它如何与 JVM 交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57647378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com