内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

如何理解Java常見知識點中的Jvm架構(gòu)-創(chuàng)新互聯(lián)

如何理解Java常見知識點中的Jvm架構(gòu),針對這個問題,這篇文章詳細介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷、網(wǎng)站重做改版、牡丹網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、商城網(wǎng)站定制開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為牡丹等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

JVM是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用于計算設(shè)備的規(guī)范,它是一個虛構(gòu)出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。Java虛擬機包括一套字節(jié)碼指令集、一組寄存器、一個棧、一個垃圾回收堆和一個存儲方法域。 JVM屏蔽了與具體操作系統(tǒng)平臺相關(guān)的信息,使Java程序只需生成在Java虛擬機上運行的目標代碼(字節(jié)碼),就可以在多種平臺上不加修改地運行。JVM在執(zhí)行字節(jié)碼時,實際上最終還是把字節(jié)碼解釋成具體平臺上的機器指令執(zhí)行。

二. JRE/JDK/JVM是什么關(guān)系

JRE(Java Runtime Environment,Java運行環(huán)境),也就是Java平臺。所有的Java 程序都要在JRE下才能運行。普通用戶只需要運行已開發(fā)好的java程序,安裝JRE即可。

JDK(Java Development Kit)是程序開發(fā)者用來來編譯、調(diào)試java程序用的開發(fā)工具包。JDK的工具也是Java程序,也需要JRE才能運行。為了保持JDK的獨立性和完整性,在JDK的安裝過程中,JRE也是 安裝的一部分。所以,在JDK的安裝目錄下有一個名為jre的目錄,用于存放JRE文件。

JVM(Java Virtual Machine,Java虛擬機)是JRE的一部分。它是一個虛構(gòu)出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。JVM有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。Java語言最重要的特點就是跨平臺運行。使用JVM就是為了支持與操作系統(tǒng)無關(guān),實現(xiàn)跨平臺。

三. JVM原理

JVM是java的核心和基礎(chǔ),在java編譯器和os平臺之間的虛擬處理器。它是一種利用軟件方法實現(xiàn)的抽象的計算機基于下層的操作系統(tǒng)和硬件平臺,可以在上面執(zhí)行java的字節(jié)碼程序。

java編譯器只要面向JVM,生成JVM能理解的代碼或字節(jié)碼文件。Java源文件經(jīng)編譯成字節(jié)碼程序,通過JVM將每一條指令翻譯成不同平臺機器碼,通過特定平臺運行。

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

JVM被分為三個主要的子系統(tǒng):

  • 類加載器子系統(tǒng)

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

  • 執(zhí)行引擎

1. 類加載器子系統(tǒng)

Java的動態(tài)類加載功能是由類加載器子系統(tǒng)處理。當它在運行時(不是編譯時)首次引用一個類時,它加載、鏈接并初始化該類文件。

加載

類由此組件加載。啟動類加載器 (BootStrap class Loader)、擴展類加載器(Extension class Loader)和應(yīng)用程序類加載器(Application class Loader) 這三種類加載器幫助完成類的加載。

  • 啟動類加載器 – 負責從啟動類路徑中加載類,無非就是rt.jar。這個加載器會被賦予最高優(yōu)先級。

  • 擴展類加載器 – 負責加載ext 目錄(jre\lib)內(nèi)的類.

  • 應(yīng)用程序類加載器 – 負責加載應(yīng)用程序級別類路徑,涉及到路徑的環(huán)境變量等etc.

上述的類加載器會遵循委托層次算法(Delegation Hierarchy Algorithm)加載類文件。

鏈接

  • 校驗 – 字節(jié)碼校驗器會校驗生成的字節(jié)碼是否正確,如果校驗失敗,我們會得到校驗錯誤。

  • 準備 – 分配內(nèi)存并初始化默認值給所有的靜態(tài)變量。

  • 解析 – 所有符號內(nèi)存引用被方法區(qū)(Method Area)的原始引用所替代。

初始化

這是類加載的最后階段,這里所有的靜態(tài)變量會被賦初始值, 并且靜態(tài)塊將被執(zhí)行。

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

運行時數(shù)據(jù)區(qū)域被劃分為5個主要組件:

方法區(qū)(Method Area)

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

堆區(qū)(Heap Area)

所有的對象和它們相應(yīng)的實例變量以及數(shù)組將被存儲在這里。每個JVM同樣只有一個堆區(qū)。由于方法區(qū)和堆區(qū)的內(nèi)存由多個線程共享,所以存儲的數(shù)據(jù)不是線程安全的。

棧區(qū)(Stack Area)

對每個線程會單獨創(chuàng)建一個運行時棧。對每個函數(shù)呼叫會在棧內(nèi)存生成一個棧幀(Stack Frame)。所有的局部變量將在棧內(nèi)存中創(chuàng)建。棧區(qū)是線程安全的,因為它不是一個共享資源。棧幀被分為三個子實體:

  • 局部變量數(shù)組 – 包含多個與方法相關(guān)的局部變量并且相應(yīng)的值將被存儲在這里。

  • 操作數(shù)棧 – 如果需要執(zhí)行任何中間操作,操作數(shù)棧作為運行時工作區(qū)去執(zhí)行指令。

  • 幀數(shù)據(jù) – 方法的所有符號都保存在這里。在任意異常的情況下,catch塊的信息將會被保存在幀數(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ù)的代碼則使用JIT編譯器將全部字節(jié)碼編譯成本機代碼。本機代碼將直接用于重復(fù)的方法調(diào)用,這提高了系統(tǒng)的性能。

  • 中間代碼shengchengqi【提示違禁詞了】 – 生成中間代碼

  • 代碼優(yōu)化器 – 負責優(yōu)化上面生成的中間代碼

  • 目標代碼shengchengqi【提示違禁詞了】 – 負責生成機器代碼或本機代碼

  • 探測器(Profiler) – 一個特殊的組件,負責尋找被多次調(diào)用的方法。

垃圾回收器:

收集并刪除未引用的對象??梢酝ㄟ^調(diào)用”System.gc()”來觸發(fā)垃圾回收,但并不保證會確實進行垃圾回收。JVM的垃圾回收只收集哪些由new關(guān)鍵字創(chuàng)建的對象。所以,如果不是用new創(chuàng)建的對象,你可以使用finalize函數(shù)來執(zhí)行清理。

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

本地方法庫:它是一個執(zhí)行引擎所需的本地庫的集合。

看完上述內(nèi)容,你們掌握Java常見知識點中的Jvm架構(gòu)的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

關(guān)于如何理解Java常見知識點中的Jvm架構(gòu)問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道了解更多相關(guān)知識。

網(wǎng)頁題目:如何理解Java常見知識點中的Jvm架構(gòu)-創(chuàng)新互聯(lián)
URL鏈接:http://www.rwnh.cn/article20/dochjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、企業(yè)網(wǎng)站制作自適應(yīng)網(wǎng)站、商城網(wǎng)站、做網(wǎng)站、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
定陶县| 泽库县| 浑源县| 阜康市| 汕头市| 股票| 甘孜县| 科技| 巴林左旗| 布尔津县| 筠连县| 微博| 永福县| 临西县| 邵阳市| 巴塘县| 美姑县| 新宁县| 枝江市| 盐城市| 黎川县| 三门县| 会同县| 中超| 澄江县| 澳门| 阿合奇县| 黄石市| 湖口县| 措美县| 若羌县| 泰安市| 都江堰市| 玉龙| 车致| 龙山县| 东港市| 济阳县| 临高县| 碌曲县| 融水|