日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

每個Java開發(fā)人員都知道字節(jié)碼將由JRE(Java運行時環(huán)境)執(zhí)行。但是,許多人并不知道JRE是Java虛擬機(JVM)的實現(xiàn),它可以分析字節(jié)碼,解釋代碼并執(zhí)行它。作為開發(fā)人員,了解JVM的體系結(jié)構(gòu)非常重要,因為它使我們能夠更高效地編寫代碼。在本文中,我們將更深入地了解Java中的JVM體系結(jié)構(gòu)以及JVM的不同組件。

什么是JVM?

一個虛擬機是一個軟件實現(xiàn)物理機。Java是根據(jù)WORA(可在任何地方運行一次寫入)的概念開發(fā)的,該概念可在VM上運行。該編譯器編譯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)

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

執(zhí)行引擎

1. ClassLoader子系統(tǒng)

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

1.1加載

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

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

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

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

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

1.2連結(jié)

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

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

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

1.3初始化

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

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

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

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

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

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

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

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

3.執(zhí)行引擎

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

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

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

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

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

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

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

    關(guān)注

    1

    文章

    1673

    瀏覽量

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

    關(guān)注

    0

    文章

    161

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    Linux系統(tǒng)中這三個命令的完整功能和正確查看方法

    在 Linux 系統(tǒng)的日常運維中,監(jiān)控進程資源使用情況是最頻繁的工作之一。當服務(wù)器 CPU 突然飆高、內(nèi)存告警、或者業(yè)務(wù)響應(yīng)變慢時,運維工程師首先要做的事情就是查看系統(tǒng)資源使用狀況。top、ps、free 這三個命令幾乎是每個運
    的頭像 發(fā)表于 04-21 11:45 ?213次閱讀

    解析碳化硅MOS管在型號替換背后存在的三個主要差異

    碳化硅MOS管為什么不能簡單根據(jù)型號直接替代?從參數(shù)匹配到系統(tǒng)驗證主要三個差異。當工程師看到一份標注著“耐壓1200V、電流33A、導(dǎo)通電阻60mΩ”的產(chǎn)品規(guī)格書時,第一反應(yīng)往往是尋找參數(shù)相同
    的頭像 發(fā)表于 02-28 10:50 ?774次閱讀

    駿馬奔騰,芯向未來:SiC功率器件的“三個必然”與丙午馬年的產(chǎn)業(yè)躍遷

    駿馬奔騰,芯向未來:SiC功率器件的“三個必然”與丙午馬年的產(chǎn)業(yè)躍遷 日期: 2026年 丙午馬年 除夕 主題: 傾佳電子楊茜“三個必然”戰(zhàn)略論斷與基本半導(dǎo)體碳化硅技術(shù)的產(chǎn)業(yè)替代邏輯 關(guān)鍵詞
    的頭像 發(fā)表于 02-15 10:33 ?176次閱讀
    駿馬奔騰,芯向未來:SiC功率器件的“<b class='flag-5'>三個</b>必然”與丙午馬年的產(chǎn)業(yè)躍遷

    altium designer 如何畫短路兩或者三個網(wǎng)絡(luò)的封裝?

    如何我畫了一天線,有3引腳,TX1,TX2,GND, 但實際上這三個引腳是連在一起的。我導(dǎo)入pcb后,會報DRC警告,這個該怎么解決?
    發(fā)表于 02-12 19:30

    RDMA設(shè)計37:RoCE v2 子系統(tǒng)模型設(shè)計

    單元及 REP 處理單元與虛擬內(nèi)存管理器相連,這三個單元同時也負責數(shù)據(jù)的存取操作控制。 除此之外,RoCE v2 子系統(tǒng)模型也負責接收及發(fā)送 ARP 及 ICMP 數(shù)據(jù)包,其用于驗證 DUT 中網(wǎng)絡(luò)嗅
    發(fā)表于 02-06 16:19

    三個經(jīng)典開關(guān)電源實際問題解析

    下面三個關(guān)于多路輸出電源連續(xù)工作模式的問題,測試一下您的電源設(shè)計知識。然后核對您的答案。
    的頭像 發(fā)表于 01-22 16:08 ?3679次閱讀
    <b class='flag-5'>三個</b>經(jīng)典開關(guān)電源實際問題解析

    操作系統(tǒng)體系結(jié)構(gòu)

    操作系統(tǒng)體系結(jié)構(gòu)是一開放的問題。正如上文所述,操作系統(tǒng)在核心態(tài)為應(yīng)用程序提供公共的服務(wù),那么操作系統(tǒng)在核心態(tài)應(yīng)該提供什么服務(wù)、怎樣提供服
    發(fā)表于 01-15 08:19

    三個必然”戰(zhàn)略論斷下的SiC碳化硅功率半導(dǎo)體產(chǎn)業(yè)演進與自主可控之路

    三個必然”戰(zhàn)略論斷下的SiC碳化硅功率半導(dǎo)體產(chǎn)業(yè)演進與自主可控之路 在全球能源結(jié)構(gòu)轉(zhuǎn)型與“雙碳”目標的宏觀背景下,功率半導(dǎo)體作為電力電子系統(tǒng)的“心臟”,正經(jīng)歷著從硅(Si)基材料向?qū)捊麕В╓BG
    的頭像 發(fā)表于 01-08 21:35 ?359次閱讀

    家電電子系統(tǒng)設(shè)計:Littelfuse技術(shù)方案解析

    的可靠性和安全性。Littelfuse作為一家在電子保護和傳感技術(shù)領(lǐng)域具有深厚底蘊的公司,為家電設(shè)計提供了全面的解決方案。本文將結(jié)合Littelfuse的相關(guān)資料,深入探討家電電子系統(tǒng)設(shè)計中的關(guān)鍵技術(shù)和產(chǎn)品應(yīng)用。 文件下載: Littelfuse 主要家電解決方
    的頭像 發(fā)表于 12-16 09:50 ?671次閱讀

    未來工業(yè)AI發(fā)展的三個必然階段

    與優(yōu)化 能力的深層革命。 未來十年,工業(yè)AI的發(fā)展將經(jīng)歷三個清晰的階段:? 智能輔助 → 智能決策 → 自主優(yōu)化 。這次進化,構(gòu)成了工業(yè)從“人控機器”到“機器共智”的核心路徑。 一、第一階段:智能輔助(AI for Assistance) 時間窗口:
    的頭像 發(fā)表于 10-27 15:47 ?622次閱讀
    未來工業(yè)AI發(fā)展的<b class='flag-5'>三個</b>必然階段

    Fakra接口標準以及它能為汽車電子系統(tǒng)帶來什么

    Fakra接口標準是一種全球通用的汽車電子系統(tǒng)連接技術(shù),它的主要作用是為汽車電子系統(tǒng)提供一種可靠的、全球通用的接口標準。它能夠提高汽車電子系統(tǒng)的可靠性、整體性能和靈活性,使汽車電
    的頭像 發(fā)表于 09-17 14:50 ?3895次閱讀
    Fakra接口標準以及它能為汽車電<b class='flag-5'>子系統(tǒng)</b>帶來什么

    迅為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)進行一登記
    發(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 ?1233次閱讀
    迅為RK3568開發(fā)板驅(qū)動指南GPIO<b class='flag-5'>子系統(tǒng)</b>GPIO<b class='flag-5'>子系統(tǒng)</b>API函數(shù)的引入

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)級節(jié)點操作函數(shù)實驗

    迅為RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng)級節(jié)點操作函數(shù)實驗
    的頭像 發(fā)表于 05-26 15:39 ?1704次閱讀
    迅為RK3568開發(fā)板驅(qū)動指南GPIO<b class='flag-5'>子系統(tǒng)</b><b class='flag-5'>三</b>級節(jié)點操作函數(shù)實驗

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

    RK3568驅(qū)動指南|第十二篇 GPIO子系統(tǒng)-第135章 GPIO子系統(tǒng)與pinctrl子系統(tǒng)相結(jié)合實驗
    的頭像 發(fā)表于 05-23 13:47 ?1232次閱讀
    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é)合實驗
    南安市| 商都县| 高碑店市| 泗阳县| 南阳市| 错那县| 屯门区| 上林县| 通许县| 伊吾县| 广昌县| 高邮市| 平安县| 天台县| 临洮县| 林甸县| 望奎县| 金沙县| 兰西县| 山东省| 行唐县| 项城市| 微博| 宜丰县| 阳曲县| 大名县| 吉安市| 金山区| 全州县| 长武县| 德保县| 香格里拉县| 安丘市| 兴业县| 神木县| 云和县| 金沙县| 广平县| 阳山县| 吉安市| 越西县|