成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JVM底層原理解析

云計算 虛擬化
hi ,大家好,我是極客重生的Alex,今天分享一篇JVM底層原理的文章,希望可以幫助大家了解一下語言虛擬機一些設計原理,不管你當前使用語言是C,C++,Golang,Python等,很多思想和原理是相通的,可以借鑒。

[[409211]]

本文轉載自微信公眾號「極客重生」,作者極客重生。轉載本文請聯系極客重生公眾號。

hi ,大家好,我是極客重生的Alex,今天分享一篇JVM底層原理的文章,希望可以幫助大家了解一下語言虛擬機一些設計原理,不管你當前使用語言是C,C++,Golang,Python等,很多思想和原理是相通的,可以借鑒。

比如之前分析內核虛擬機eBPF架構:

詳細請看:Linux網絡新技術基石 |eBPF and XDP

在本文中,您將學習

  • JVM架構
  • 軟件代碼編譯執行流程
  • C代碼編譯執行過程
  • Java代碼編譯執行過程
  • 為什么Java既是解釋型語言又是編譯型語言?
  • 為什么 Java 很慢?

什么是JVM?

Java 虛擬機 (JVM)是提供運行時環境來驅動 Java 代碼或應用程序的引擎。它將 Java 字節碼轉換為機器語言。JVM 是 Java 運行環境 (JRE) 的一部分。在其他編程語言中,編譯器為特定系統生成機器代碼。但是,Java編譯器為稱為Java 虛擬機的虛擬機生成代碼。

JVM的工作原理

首先,Java 代碼被編譯成字節碼,這個字節碼在不同的機器上被解釋,在主機系統和 Java 源代碼之間,字節碼是一種中介語言,Java 中的 JVM 負責分配內存空間。

Java 虛擬機 (JVM) 的工作

JVM架構

讓我們了解 JVM 的架構。Java 中的 JVM 架構包含類加載器、內存區、執行引擎等。

Java 虛擬機架構

1) 類加載器

類加載器是用于加載類文件的子系統。它執行三個主要功能,即。加載、鏈接和初始化。

2) 方法區

JVM 方法區存儲類結構,如元數據、常量運行時池和方法代碼。

3) 堆

所有的Objects及其相關的實例變量和數組都存儲在堆中。此內存是通用的,并在多個線程之間共享。

4) JVM 語言棧

Java 語言堆棧存儲局部變量,和部分結果,每個線程都有自己的 JVM 堆棧,在創建線程時同時創建。每當調用方法時都會創建一個新的,并在方法調用過程完成時將其刪除。

5) PC 寄存器

PC 寄存器存儲當前正在執行的 Java 虛擬機指令的地址。在 Java 中,每個線程都有其獨立的 PC 寄存器。

6) 本地方法棧

本機方法棧持有本機代碼的指令取決于本機庫。它是用另一種語言而不是 Java 編寫的。

7) 執行引擎

它是一種用于測試硬件、軟件或完整系統的軟件。測試執行引擎從不攜帶有關被測產品的任何信息。

8) 本地方法接口

本機方法接口是一個編程框架。它允許在 JVM 中運行的 Java 代碼由庫和本機應用程序調用。

9) 本地方法庫

本機庫是執行引擎所需的本機庫(C、C++)的集合。

軟件代碼編譯執行流程

為了編寫和執行軟件程序,您需要以下內容

1) 編輯器 – 要輸入您的程序,可以使用記事本。

2) 編譯器 ——將您的高級語言程序轉換為本地機器代碼。

3) 鏈接器 ——將主程序中的不同程序文件引用組合在一起。

4) Loader – 將您的輔助存儲設備(如硬盤、閃存驅動器、CD )中的文件加載到 RAM 中以供執行。執行代碼時會自動完成加載。

5) 執行– 由您的操作系統和處理器處理的代碼的實際執行。

C代碼編譯執行過程

了解Java中的Java編譯過程。首先讓我們快速了解一下 C 中的編譯和鏈接過程。

假設在 main 中,您調用了兩個函數 f1 和 f2。main 函數存儲在文件 a1.c 中。

函數 f1 存儲在文件 a2.c 中

函數 f2 存儲在文件 a3.c 中

所有這些文件,即 a1.c、a2.c 和 a3.c,都被提供給編譯器。其輸出是相應的目標文件,即機器代碼。

下一步是在鏈接器的幫助下將所有這些目標文件集成到一個 .exe 文件中。鏈接器會將所有這些文件組合在一起并生成 .exe 文件。

在程序運行過程中,加載程序會將 a.exe 加載到 RAM 中執行。

Java VM 中的 Java 代碼編譯和執行

讓我們看看 JAVA 的編譯執行過程。在您的主文件中,您有兩個方法 f1 和 f2。

  • main方法存放在文件a1.java中
  • f1 作為 a2.java 存儲在文件中
  • f2 作為 a3.java 存儲在文件中

編譯器將編譯這三個文件,并生成 3 個對應的 .class 文件,其中包含字節碼。與 C 不同,沒有進行鏈接。Java VM 或 Java 虛擬機駐留在 RAM 上。在執行期間,使用類加載器將類文件帶到 RAM 中。字節碼已驗證是否存在任何安全漏洞。

接下來,執行引擎會將字節碼轉換為本地機器碼。這只是及時編譯,這是Java相對較慢的主要原因之一。

注意:JIT或即時編譯器是 Java 虛擬機 (JVM) 的一部分。它同時轉化具有相似功能的部分字節碼。

為什么Java既是解釋型語言又是編譯型語言?

編程語言被分類為

  • 高級語言,例如C++、Java
  • 中級語言,例如C
  • 低級語言,例如匯編
  • 最后是最低級別的機器語言。

編譯器是一個程序,它把程序從一個級別轉化到另外一個級別(一般是從高到低),比如把C++ 程序轉化到機器碼。

java編譯器將高級java代碼轉換成字節碼(也是一種機器碼)。

解釋器是一個程序,它把程序轉化為相同等級的其他語言,比如把Java程序轉換成C++。

在 Java 中,Jit生成器將字節碼轉換為處于相同級別的本機機器代碼,因此,Java 既是編譯型語言,又是解釋型語言。

為什么 Java 很慢?

Java 運行緩慢的兩個主要原因是

動態鏈接:與 C 不同,鏈接是在運行時完成的,每次程序在 Java 中運行時。

運行時解釋器:字節碼到本地機器碼的轉換是在 Java 運行時完成的,這進一步減慢了速度。

但是,最新版本的 Java 在很大程度上解決了性能瓶頸。

總結:

 

  • JVM 的完整形式是Java Virtual Machine.(Java虛擬機),Java 中的 JVM 是驅動 Java 代碼的引擎,它將 Java 字節碼轉換為機器語言。
  • Java 中的 JVM 架構包含類加載器、內存區、執行引擎等。
  • 在 JVM 中,Java 代碼被編譯為字節碼。這個字節碼在不同的機器上被解釋成不同的機器碼。
  • JIT 代表即時編譯器。JIT 是 Java 虛擬機 (JVM) 的一部分。它用于加快執行時間。
  • 與其他編譯器機器相比,Java 中的 JVM 執行速度可能較慢。

 

責任編輯:武曉燕 來源: 極客重生
相關推薦

2021-08-07 10:27:52

JVM開源項目

2024-08-27 12:32:32

2017-05-31 13:16:35

PHP運行機制原理解析

2022-11-04 09:43:05

Java線程

2020-08-10 18:03:54

Cache存儲器CPU

2021-07-23 13:34:50

MySQL存儲InnoDB

2023-02-28 09:07:18

ChatGPTAI

2020-03-26 16:40:07

MySQL索引數據庫

2020-03-17 08:36:22

數據庫存儲Mysql

2019-12-06 10:59:20

JavaScript運行引擎

2021-07-12 09:45:36

NameServer 核心Conusmer

2021-01-12 14:46:34

Kubernetes開發存儲

2021-12-01 18:36:35

屬性

2023-08-11 07:44:40

TCP滑動窗口數據

2020-05-21 13:25:43

Spring組件架構

2024-06-27 08:26:10

LooperAndroid內存

2010-07-06 10:07:10

jQueryJSON

2015-07-01 13:34:22

Kubernetes應用部署模型

2021-06-16 15:18:03

鴻蒙HarmonyOS應用

2023-11-16 09:01:37

Hadoop數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产亚洲网站 | 欧美精品1区 | 99re6在线视频精品免费 | 久久小视频| 日本a级大片 | 国产一区二区三区久久久久久久久 | 日韩综合在线 | 自拍中文字幕 | 国产一区二区视频免费在线观看 | 亚洲在线看 | 日韩在线中文 | 亚洲精品一区二三区不卡 | 一二区成人影院电影网 | 爱操av | 精品国产乱码久久久久久图片 | 不卡一区二区三区四区 | 午夜免费视频 | 综合久 | 国产免费福利 | 午夜欧美一区二区三区在线播放 | 日韩欧美字幕 | 亚洲精品久久久久中文字幕欢迎你 | 羞羞视频在线网站观看 | 久久久久久999 | 五月婷婷视频 | 欧美xxxx做受欧美 | 日韩一区av| 亚洲中字在线 | 国产精品欧美精品日韩精品 | 亚洲国产成人在线观看 | 美女福利视频一区 | 国产精品久久久久久影院8一贰佰 | 日韩色视频 | 狠狠爱视频 | 中文字幕av在线 | 无码日韩精品一区二区免费 | 欧美最猛性xxxxx亚洲精品 | 免费观看一级毛片 | 国产一区二区三区日韩 | 国产精品一区二区三区99 | 久久综合久久综合久久综合 |