您好,登錄后才能下訂單哦!
這篇文章主要介紹了java虛擬機(jī)的基本組成是什么,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
java虛擬機(jī)的基本組成:
類加載子系統(tǒng)、運(yùn)行時(shí)數(shù)據(jù)區(qū)(JVM內(nèi)存模型)、執(zhí)行引擎、本地方法接口
類加載器:
主要負(fù)責(zé)把編譯好的.class字節(jié)碼文件裝入運(yùn)行時(shí)數(shù)據(jù)區(qū),以供運(yùn)行時(shí)數(shù)據(jù)區(qū)使用。
運(yùn)行時(shí)數(shù)據(jù)區(qū)(JVM內(nèi)存模型):
1、堆:主要存放對(duì)象,多線程共享(垃圾回收的主要區(qū)域)。
2、方法區(qū):主要存放常量,靜態(tài)變量,類元信息(類名,方法,字段,版本等等)。
3、線程棧:存儲(chǔ)方法參數(shù)、局部變量、中間運(yùn)算結(jié)果、對(duì)象的引用、并且提供部分其它模塊工作需要的數(shù)據(jù)等。
4、本地方法棧: 本地方法棧為虛擬機(jī)使用到的native方法服務(wù)。
5、程序計(jì)數(shù)器:當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器,當(dāng)執(zhí)行本地方法時(shí)為null。
執(zhí)行引擎:
執(zhí)行引擎是JVM執(zhí)行Java字節(jié)碼的核心,執(zhí)行方式主要分為解釋執(zhí)行、編譯執(zhí)行、自適應(yīng)優(yōu)化執(zhí)行、硬件芯片執(zhí)行方式。
本地方法接口:
非java語言實(shí)現(xiàn)的方法接口。
jdk1.8 jvm內(nèi)存結(jié)構(gòu)圖:
JVM內(nèi)存模型 1.8之前 和 1.8區(qū)別:
主要差別:
1、元數(shù)據(jù)區(qū)取代了永久代。元空間的本質(zhì)和永久代類似,都是對(duì)JVM規(guī)范中方法區(qū)的實(shí)現(xiàn)(ps:方法區(qū)是java虛擬機(jī)中的規(guī)范,而永久代和元空間都是方法區(qū)的一種實(shí)現(xiàn))。
2、元數(shù)據(jù)區(qū)從虛擬機(jī)中移動(dòng)到了本地內(nèi)存。
3、jdk1.8中常量池和靜態(tài)變量移動(dòng)到了堆中存儲(chǔ)(邏輯上還是屬于方法區(qū))
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享java虛擬機(jī)的基本組成是什么內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。