18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

JVM體系的三個主要子系統(tǒng)

汽車玩家 ? 來源:黑馬程序員 ? 作者:黑馬程序員 ? 2020-05-05 19:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

快來查看JVM不同組件的概述以及非常有用的圖表。

這是最近在國外論壇看到一個很實(shí)用的介紹,分享給大家哦。

每個Java開發(fā)人員都知道字節(jié)碼將由JRE(Java運(yùn)行時環(huán)境)執(zhí)行。但是,許多人并不知道JRE是Java虛擬機(jī)(JVM)的實(shí)現(xiàn),它可以分析字節(jié)碼,解釋代碼并執(zhí)行它。作為開發(fā)人員,了解JVM的體系結(jié)構(gòu)非常重要,因?yàn)樗刮覀兡軌蚋咝У鼐帉懘a。在本文中,我們將更深入地了解Java中的JVM體系結(jié)構(gòu)以及JVM的不同組件。

什么是JVM?

一個虛擬機(jī)是一個軟件實(shí)現(xiàn)物理機(jī)。Java是根據(jù)WORA(可在任何地方運(yùn)行一次寫入)的概念開發(fā)的,該概念可在VM上運(yùn)行。該編譯器編譯Java文件轉(zhuǎn)換成一個Java 的.class文件,則該.class文件輸入到JVM,它加載并執(zhí)行類文件。下圖是JVM的體系結(jié)構(gòu)圖。

JVM體系結(jié)構(gòu)圖

JVM體系的三個主要子系統(tǒng)

JVM如何工作?

如上面的架構(gòu)圖所示,JVM分為三個主要子系統(tǒng):

ClassLoader子系統(tǒng)

運(yùn)行時數(shù)據(jù)區(qū)

執(zhí)行引擎

1. ClassLoader子系統(tǒng)

Java的動態(tài)類加載功能由ClassLoader子系統(tǒng)處理。它加載,鏈接。并在運(yùn)行時(而非編譯時)首次引用類時初始化類文件。

1.1加載

類將由此組件加載。BootStrap ClassLoader,擴(kuò)展ClassLoader和Application ClassLoader是有助于實(shí)現(xiàn)該目標(biāo)的三個ClassLoader。

BootStrap ClassLoader –負(fù)責(zé)從引導(dǎo)類路徑中加載類,僅用于rt.jar。最高優(yōu)先級將給予此加載程序。

擴(kuò)展ClassLoader –負(fù)責(zé)加載ext文件夾(jre \ lib)內(nèi)的類。

Application ClassLoader –負(fù)責(zé)加載應(yīng)用程序級別的類路徑,提到的環(huán)境變量路徑等。

上面的ClassLoader在加載類文件時將遵循委托層次算法。

1.2連結(jié)

驗(yàn)證 -字節(jié)碼驗(yàn)證程序?qū)Ⅱ?yàn)證生成的字節(jié)碼是否正確,如果驗(yàn)證失敗,我們將收到驗(yàn)證錯誤。

準(zhǔn)備 –將為所有靜態(tài)變量分配內(nèi)存并為其分配默認(rèn)值。

解決 –將所有符號內(nèi)存引用替換為“方法區(qū)域”中的原始引用。

1.3初始化

這是ClassLoading的最后階段;在此,所有靜態(tài)變量將被分配原始值,并且將執(zhí)行靜態(tài)塊。

2.運(yùn)行時數(shù)據(jù)區(qū)

運(yùn)行時數(shù)據(jù)區(qū)分為五個主要部分:

方法區(qū)域–所有類級別的數(shù)據(jù)(包括靜態(tài)變量)都將存儲在此處。每個JVM只有一個方法區(qū)域,它是共享資源。

堆區(qū)–所有對象及其對應(yīng)的實(shí)例變量和數(shù)組將存儲在此處。每個JVM還有一個堆區(qū)。由于“方法”和“堆”區(qū)域共享多個線程的內(nèi)存,因此存儲的數(shù)據(jù)不是線程安全的。

堆棧區(qū)–對于每個線程,將創(chuàng)建一個單獨(dú)的運(yùn)行時堆棧。對于每個方法調(diào)用,將在堆棧存儲器中創(chuàng)建一個條目,稱為堆棧幀。所有局部變量都將在堆棧存儲器中創(chuàng)建。堆棧區(qū)域不是共享資源,因此是線程安全的。堆棧框架分為三個子實(shí)體:局部變量數(shù)組 –與該方法有關(guān),涉及多少局部變量,并且相應(yīng)的值將存儲在此處。操作數(shù)堆棧 –如果需要執(zhí)行任何中間操作,則操作數(shù)堆棧充當(dāng)執(zhí)行該操作的運(yùn)行時工作區(qū)。幀數(shù)據(jù) –與該方法相對應(yīng)的所有符號都存儲在此處。在任何例外情況下,捕獲塊信息將保留在幀數(shù)據(jù)中。

PC寄存器 –每個線程將具有單獨(dú)的PC寄存器,以在執(zhí)行指令后保存當(dāng)前執(zhí)行指令的地址,PC寄存器將用下一條指令進(jìn)行更新。

本機(jī)方法堆棧 –本機(jī)方法堆棧保存本機(jī)方法信息。對于每個線程,將創(chuàng)建一個單獨(dú)的本機(jī)方法堆棧。

3.執(zhí)行引擎

分配給運(yùn)行時數(shù)據(jù)區(qū)的字節(jié)碼將由執(zhí)行引擎執(zhí)行。執(zhí)行引擎讀取字節(jié)碼并逐段執(zhí)行。

解釋器–解釋器解釋字節(jié)碼的速度較快,但執(zhí)行速度較慢。解釋器的缺點(diǎn)是,當(dāng)多次調(diào)用一種方法時,每次都需要新的解釋。

JIT編譯器– JIT編譯器消除了解釋器的缺點(diǎn)。執(zhí)行引擎將使用解釋器的幫助來轉(zhuǎn)換字節(jié)碼,但是當(dāng)發(fā)現(xiàn)重復(fù)的代碼時,它將使用JIT編譯器,該編譯器將編譯整個字節(jié)碼并將其更改為本地代碼。此本地代碼將直接用于重復(fù)的方法調(diào)用,從而提高系統(tǒng)的性能。中間代碼生成器–產(chǎn)生中間代碼代碼優(yōu)化器–負(fù)責(zé)優(yōu)化上面生成的中間代碼目標(biāo)代碼生成器–負(fù)責(zé)生成機(jī)器代碼或本機(jī)代碼Profiler–一個特殊的組件,負(fù)責(zé)查找熱點(diǎn),即是否多次調(diào)用該方法。

垃圾收集器:收集并刪除未引用的對象。垃圾回收可以通過調(diào)用觸發(fā)System.gc(),但不能保證執(zhí)行。JVM的垃圾收集收集創(chuàng)建的對象。

Java本機(jī)接口(JNI):JNI將與本機(jī)方法庫進(jìn)行交互,并提供執(zhí)行引擎所需的本機(jī)庫。

本機(jī)方法庫:這是本機(jī)庫的集合,這是執(zhí)行引擎所需的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1665

    瀏覽量

    50965
  • JVM
    JVM
    +關(guān)注

    關(guān)注

    0

    文章

    160

    瀏覽量

    12910
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    迅為RK3568開發(fā)板新增topeet子系統(tǒng)-在產(chǎn)品中新增子系統(tǒng)

    build/subsystem_config.json文件中增加名為topeet的子系統(tǒng),在3.4節(jié)已經(jīng)新建了topeet 文件夾存放子系統(tǒng)代碼。添加 topeet 子系統(tǒng)進(jìn)行一登記
    發(fā)表于 06-16 10:43

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)GPIO子系統(tǒng)API函數(shù)的引入
    的頭像 發(fā)表于 05-29 14:05 ?753次閱讀
    迅為RK3568開發(fā)板驅(qū)動指南GPIO<b class='flag-5'>子系統(tǒng)</b>GPIO<b class='flag-5'>子系統(tǒng)</b>API函數(shù)的引入

    RK3568驅(qū)動指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實(shí)驗(yàn)

    RK3568驅(qū)動指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實(shí)驗(yàn)
    的頭像 發(fā)表于 05-23 13:47 ?635次閱讀
    RK3568驅(qū)動指南|第十二篇 GPIO<b class='flag-5'>子系統(tǒng)</b>-第135章 GPIO<b class='flag-5'>子系統(tǒng)</b>與pinctrl<b class='flag-5'>子系統(tǒng)</b>相結(jié)合實(shí)驗(yàn)

    飛凌嵌入式ElfBoard ELF 1板卡-input子系統(tǒng)之input子系統(tǒng)簡介

    在Linux系統(tǒng)中,Input子系統(tǒng)是一用于處理輸入設(shè)備的軟件框架。它提供了一種統(tǒng)一的接口和機(jī)制,使得各種輸入設(shè)備(如鍵盤、鼠標(biāo)、觸摸屏、游戲手柄等)能夠與Linux系統(tǒng)進(jìn)行交互。I
    發(fā)表于 04-15 10:27

    半導(dǎo)體制造過程中的三個主要階段

    前段工藝(Front-End)、中段工藝(Middle-End)和后段工藝(Back-End)是半導(dǎo)體制造過程中的三個主要階段,它們在制造過程中扮演著不同的角色。
    的頭像 發(fā)表于 03-28 09:47 ?4885次閱讀
    半導(dǎo)體制造過程中的<b class='flag-5'>三個</b><b class='flag-5'>主要</b>階段

    飛凌嵌入式ElfBoard ELF 1板卡-Pinctrl和GPIO子系統(tǒng)之Pinctrl子系統(tǒng)

    pinctrl(Pin Control)子系統(tǒng)是Linux內(nèi)核中的一模塊化子系統(tǒng),用于管理和控制硬件引腳(Pin)的配置和功能。它提供了一種統(tǒng)一的接口,使驅(qū)動程序可以對硬件引腳進(jìn)行靈活的配置和控制
    發(fā)表于 03-22 09:23

    如何檢測極管的三個

    可以用萬用表來初步確定極管的好壞及類型 (NPN 型還是 PNP 型 ),并辨別出e(發(fā)射極)、b(基極)、c(集電極)三個電極。
    發(fā)表于 03-08 16:40

    如何區(qū)分場效應(yīng)管mos管三個引腳

    場效應(yīng)管mos管三個引腳怎么區(qū)分
    發(fā)表于 03-07 09:20 ?0次下載

    Linux系統(tǒng)中最重要的三個命令

    Linux劍客是Linux系統(tǒng)中最重要的三個命令,它們以其強(qiáng)大的功能和廣泛的應(yīng)用場景而聞名。這三個工具的組合使用幾乎可以完美應(yīng)對Shell中的數(shù)據(jù)分析場景,因此被統(tǒng)稱為Linux
    的頭像 發(fā)表于 03-03 10:37 ?683次閱讀

    使用DDS生成三個信號并在Vivado中實(shí)現(xiàn)低通濾波器

    本文使用 DDS 生成三個信號,并在 Vivado 中實(shí)現(xiàn)低通濾波器。低通濾波器將濾除相關(guān)信號。
    的頭像 發(fā)表于 03-01 14:31 ?2270次閱讀
    使用DDS生成<b class='flag-5'>三個</b>信號并在Vivado中實(shí)現(xiàn)低通濾波器

    淺談瑞盟科技·MS8313——三個半 H 橋驅(qū)動器集成電路

    MS8313 提供三個可獨(dú)立控制的半 H 橋驅(qū)動器??捎糜隍?qū)動螺線管或者其他負(fù)載,主要用于驅(qū)動一相無刷直流電機(jī)。提供FAE支持,歡迎咨詢了解
    的頭像 發(fā)表于 12-20 15:15 ?3266次閱讀
    淺談瑞盟科技·MS8313——<b class='flag-5'>三個</b>半 H 橋驅(qū)動器集成電路

    集成電路電磁兼容性及應(yīng)對措施相關(guān)分析(一) 電子系統(tǒng)性能要求與ESD問題

    此專題將從三個方面來分享:一、電子系統(tǒng)性能要求與ESD問題二、集成電路ESD問題應(yīng)對措施、集成電路ESD測試與分析工業(yè)、消費(fèi)及汽車電子模塊開發(fā)的EMC問題會導(dǎo)致極高的開發(fā)成本和時間浪費(fèi)。在開發(fā)過程中,為了解決EMC問題,需要投
    的頭像 發(fā)表于 12-19 18:51 ?975次閱讀
    集成電路電磁兼容性及應(yīng)對措施相關(guān)分析(一) 電<b class='flag-5'>子系統(tǒng)</b>性能要求與ESD問題

    集成電路電磁兼容性及應(yīng)對措施相關(guān)分析(一) — 電子系統(tǒng)性能要求與ESD問題

    此專題將從三個方面來分享: 一、電子系統(tǒng)性能要求與ESD問題 二、集成電路ESD問題應(yīng)對措施 、集成電路ESD 測試與分析 工業(yè)、消費(fèi)及汽車電子模塊開發(fā)的 EMC 問題會導(dǎo)致極高的開發(fā)成本和時間
    的頭像 發(fā)表于 12-17 09:24 ?749次閱讀
    集成電路電磁兼容性及應(yīng)對措施相關(guān)分析(一) — 電<b class='flag-5'>子系統(tǒng)</b>性能要求與ESD問題

    動態(tài)無功補(bǔ)償?shù)?b class='flag-5'>三個必要條件

    重要性愈發(fā)凸顯。本文將探討動態(tài)無功補(bǔ)償?shù)?b class='flag-5'>三個關(guān)鍵條件,以幫助電力系統(tǒng)運(yùn)營者更好地應(yīng)對復(fù)雜的電力需求和供給問題。 動態(tài)無功補(bǔ)償?shù)?b class='flag-5'>三個必要條件包括: 實(shí)時監(jiān)測電網(wǎng)功率因數(shù)和電壓波動 :動態(tài)無功補(bǔ)償
    的頭像 發(fā)表于 11-12 14:05 ?885次閱讀
    動態(tài)無功補(bǔ)償?shù)?b class='flag-5'>三個</b>必要條件

    音頻子系統(tǒng)主要是用來做什么的,可以用來做PCM編碼器嗎?

    請問,音頻子系統(tǒng)主要是用來做什么的,可以用來做PCM編碼器嗎?支持PCM編碼輸出嗎?
    發(fā)表于 11-07 07:38