所有關(guān)于Java虛擬機(jī)學(xué)習(xí)的掌握

所有關(guān)于Java虛擬機(jī)學(xué)習(xí)的掌握

北大青鳥長沙麓谷校區(qū)      2022-04-23 02:35:01     9

所有關(guān)于Java虛擬機(jī)學(xué)習(xí)的掌握,Java虛擬機(jī)或JVM是Java運(yùn)行時(shí)系統(tǒng)。它是一個(gè)有助于驅(qū)動(dòng)Java代碼的虛擬機(jī)環(huán)境。與其他編程語言不同,每當(dāng)我們編譯Java程序時(shí),它

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

Java虛擬機(jī)或JVM是Java運(yùn)行時(shí)系統(tǒng)。它是一個(gè)有助于驅(qū)動(dòng)Java代碼的虛擬機(jī)環(huán)境。與其他編程語言不同,每當(dāng)我們編譯Java程序時(shí),它永遠(yuǎn)不會(huì)生成機(jī)器碼。盡管如此,Java編譯器會(huì)為Java虛擬機(jī)生成字節(jié)碼。

JVM是如何工作的?

JVM允許我們同時(shí)解決可移植性和安全性問題:

1.平臺(tái)獨(dú)立性:

在計(jì)算機(jī)編程中,平臺(tái)一詞代表程序運(yùn)行的環(huán)境。平臺(tái)無關(guān)僅僅意味著程序可以在不同平臺(tái)上輕松執(zhí)行,而無需重寫和重新編譯。這僅是可能的。因?yàn)閷ava程序轉(zhuǎn)換為字節(jié)碼可以更容易地在不同環(huán)境中執(zhí)行程序,因?yàn)槊總€(gè)平臺(tái)只需要實(shí)現(xiàn)JVM。

盡管JVM會(huì)因平臺(tái)而異,但它們可以理解相同的Java字節(jié)碼。這使得Java成為一種獨(dú)立于平臺(tái)的技術(shù),也證明了WORA(Write once Run Anywhere)的合理性。

2.安全:

JVM在安全方面扮演著重要的角色。JVM正在執(zhí)行的Java程序也有助于使其安全,因?yàn)镴VM負(fù)責(zé)執(zhí)行環(huán)境,它可以包含程序并防止出現(xiàn)系統(tǒng)外部的問題。這是因?yàn)樽止?jié)碼已經(jīng)過高度優(yōu)化,字節(jié)碼可以讓JVM更快地運(yùn)行程序。JVM還會(huì)驗(yàn)證字節(jié)碼,以確保程序的進(jìn)一步安全運(yùn)行。

JVM架構(gòu):

Java虛擬機(jī)或JVM的內(nèi)部架構(gòu)包括:

1.類加載器:

類加載器在運(yùn)行時(shí)初始化類文件。它動(dòng)態(tài)加載類并讀取.Class文件并保存在方法區(qū)域中創(chuàng)建的字節(jié)碼。它的三個(gè)主要功能是加載、鏈接和初始化。類加載器主要分為三種類型:

  • Bootstrap ClassLoader:Bootstrap類加載器負(fù)責(zé)加載Java.Lang.ClassLoader。它是JVM的一個(gè)重要部分,它從Rt.Jar位置加載JDK內(nèi)部類。它也被稱為原始類加載器。
  • Extension ClassLoader:擴(kuò)展類加載器從JDK擴(kuò)展庫中加載類。
  • 系統(tǒng)類加載器:系統(tǒng)類加載器的主要功能是從當(dāng)前設(shè)置的類路徑中加載類。

2.方法區(qū):

每個(gè)JVM都有一個(gè)方法區(qū)。方法區(qū)存儲(chǔ)所有類級(jí)別的數(shù)據(jù),如類名、方法、靜態(tài)變量、非靜態(tài)變量、字段等。

3.堆:

堆區(qū)默認(rèn)存放對(duì)象數(shù)據(jù)和對(duì)應(yīng)的實(shí)例變量。

4.堆棧:

將為每個(gè)單獨(dú)的線程創(chuàng)建一個(gè)單獨(dú)的運(yùn)行時(shí)堆棧。創(chuàng)建的每個(gè)堆棧塊稱為堆棧幀,用于存儲(chǔ)相應(yīng)的局部變量。線程被銷毀后,堆棧由JVM自動(dòng)終止。

5.程序計(jì)數(shù)器寄存器:

將為每個(gè)線程創(chuàng)建一個(gè)單獨(dú)的PC寄存器。它保存當(dāng)前執(zhí)行數(shù)據(jù)的數(shù)據(jù)。一旦執(zhí)行停止,PC寄存器將自動(dòng)更新到下一部分。

6.原生方法棧:

包含我們程序中使用的所有本機(jī)方法。

7.執(zhí)行引擎:

執(zhí)行引擎逐行執(zhí)行字節(jié)碼。它包含三個(gè)主要組件:

  • 口譯員:JVM的一個(gè)非常重要的成員是解釋器。解釋器根據(jù)帶下劃線的平臺(tái)指令以及運(yùn)行狀態(tài)轉(zhuǎn)換字節(jié)碼指令并執(zhí)行代碼。
  • 即時(shí)編譯器(JIT):JIT編譯器在執(zhí)行期間根據(jù)需要編譯代碼。只有將從編譯中受益的代碼才被編譯。剩下的代碼只是解釋。通過這種方式,Just-In-Time編譯器提供了一種性能提升,同時(shí)也提高了解釋器的效率。
  • 垃圾收集器:在Java中,用戶不必?fù)?dān)心如何銷毀不再使用的對(duì)象,因?yàn)閮?nèi)存的釋放是自動(dòng)處理的。用于完成的技術(shù)是引用垃圾收集。在垃圾回收中,當(dāng)一個(gè)未引用對(duì)象存在時(shí),這個(gè)對(duì)象所要求的內(nèi)存可以被另一個(gè)對(duì)象回收。

8.Java原生接口:

Java Native Interface(JNI)是一個(gè)框架,它提供了一個(gè)接口來與本地方法庫交互并調(diào)用用C、C++、Assembly等語言編寫的應(yīng)用程序。

 以上就是北大青鳥長沙麓谷校區(qū)小編介紹的"所有關(guān)于Java虛擬機(jī)學(xué)習(xí)的掌握",希望對(duì)大家有幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為您服務(wù)。

Java學(xué)習(xí)

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。