溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Linux云計(jì)算技術(shù)學(xué)習(xí):虛擬機(jī)基本結(jié)構(gòu)講解

發(fā)布時(shí)間:2020-08-09 23:48:26 來源:ITPUB博客 閱讀:155 作者:千鋒云計(jì)算 欄目:云計(jì)算

我們要對(duì)JVM虛擬機(jī)的結(jié)構(gòu)有一個(gè)感性的認(rèn)知。畢竟我們不是編程人員,認(rèn)知程度達(dá)不到那么深入。一個(gè)運(yùn)行時(shí)的Java虛擬機(jī)實(shí)例的天職是:負(fù)責(zé)運(yùn)行一個(gè)java程序。當(dāng)啟動(dòng)一個(gè)Java程序時(shí),一個(gè)虛擬機(jī)實(shí)例也就誕生了。當(dāng)該程序關(guān)閉退出,這個(gè)虛擬機(jī)實(shí)例也就隨之消亡。如果同一臺(tái)計(jì)算機(jī)上同時(shí)運(yùn)行三個(gè)Java程序,將得到三個(gè)Java虛擬機(jī)實(shí)例。每個(gè)Java程序都運(yùn)行于它自己的Java虛擬機(jī)實(shí)例中。

Linux云計(jì)算技術(shù)學(xué)習(xí):虛擬機(jī)基本結(jié)構(gòu)講解

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

負(fù)責(zé)從文件系統(tǒng)或者網(wǎng)絡(luò)中加載Class信息,加載的類信息存放于一塊稱為方法區(qū)的內(nèi)存空間。除了類信息外,方法區(qū)中可能還會(huì)存放運(yùn)行時(shí)常量池信息,包括字符串字面量和數(shù)字量。

2、Java堆

在虛擬機(jī)啟動(dòng)的時(shí)候建立,它是Java程序最主要的內(nèi)存工作區(qū)域。幾乎所有的Java對(duì)象實(shí)例都放Java堆中。堆空間是所有線程共享的,這是一塊與Java應(yīng)用密切相關(guān)的內(nèi)存區(qū)間。

3、Java的NIO庫(直接內(nèi)存)

允許Java程序使用直接內(nèi)存。直接內(nèi)存是在Java堆外的、直接向系統(tǒng)申請(qǐng)的內(nèi)存區(qū)間。通常訪問直接內(nèi)存的速度會(huì)優(yōu)于Java堆。因此出于性能考慮,讀寫頻繁的場合可能會(huì)考慮使用直接內(nèi)存。由于直接內(nèi)存在Java堆外,因此它的大小不會(huì)受限于Xmx指定的最大堆大小。但是系統(tǒng)內(nèi)存是有限的,Java堆和直接內(nèi)存的總和依然受限于操作系統(tǒng)能給出的最大內(nèi)存。

Linux云計(jì)算技術(shù)學(xué)習(xí):虛擬機(jī)基本結(jié)構(gòu)講解

4、垃圾回收系統(tǒng)

垃圾回收系統(tǒng)是Java虛擬機(jī)的重要組成部分,垃圾回收器可以對(duì)方法區(qū)、Java堆和直接內(nèi)存進(jìn)行回收。

5、Java棧

每一個(gè)Java虛擬機(jī)線程都有一個(gè)私有的Java棧。一個(gè)線程的Java棧在線程創(chuàng)建的時(shí)候被創(chuàng)建。Java保存著幀信息,Java棧中保存著局部變量、方法參數(shù),同時(shí)和Java方法的調(diào)用、返回密切相關(guān)。

6、本地方法

與Java棧非常類似,最大的不同在于Java棧用于Java方法的調(diào)用,而本地方法棧用于本地方法調(diào)用。作為Java虛擬機(jī)的重要擴(kuò)展,Java虛擬機(jī)運(yùn)行Java程序直接調(diào)用本地方法(通常使用C編寫)。

Linux云計(jì)算技術(shù)學(xué)習(xí):虛擬機(jī)基本結(jié)構(gòu)講解

7、PC寄存器

每個(gè)線程私有的空間,Java虛擬機(jī)會(huì)為每一個(gè)Java線程創(chuàng)建PC寄存器。在任意時(shí)刻,一個(gè)Java線程總是在執(zhí)行一個(gè)方法,這個(gè)正在被執(zhí)行的方法稱為當(dāng)前方法。如果當(dāng)前方法不是本地方法,PC寄存器就會(huì)指向當(dāng)前正在被執(zhí)行的指令。如果當(dāng)前方法是本地方法,那么PC寄存的值就是undefined.

8、執(zhí)行引擎

是Java虛擬機(jī)最核心組件之一,它負(fù)責(zé)執(zhí)行虛擬機(jī)的字節(jié)碼?,F(xiàn)代虛擬機(jī)為了提高執(zhí)行效率。會(huì)使用即時(shí)編譯技術(shù)將方法編譯成機(jī)器碼后再執(zhí)行。


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI