java虛擬機(jī)有自己完善的硬件架構(gòu),如處理器、堆棧等,還具有相應(yīng)的指令系統(tǒng)。JVM包含兩個(gè)子系統(tǒng)和兩個(gè)組件,兩個(gè)子系統(tǒng)為 (類裝載)、執(zhí)行引擎);兩個(gè)組件為 (運(yùn)行時(shí)數(shù)據(jù)區(qū))、 (本地接口)。
1.類加載器(Class Loader):加載類文件到內(nèi)存。Class loader只管加載,只要符合文件結(jié)構(gòu)就加載,至于能否運(yùn)行,它不負(fù)責(zé),那是有Exectution Engine 負(fù)責(zé)的。
2.執(zhí)行引擎(Execution Engine):也叫解釋器,負(fù)責(zé)解釋命令,交由操作系統(tǒng)執(zhí)行。
3.本地庫(kù)接口(Native Interface):本地接口的作用是融合不同的語(yǔ)言為java所用
4.運(yùn)行時(shí)數(shù)據(jù)區(qū)(Runtime Data Area):
(1)堆。堆是java對(duì)象的存儲(chǔ)區(qū)域,任何用new字段分配的java對(duì)象實(shí)例和數(shù)組,都被分配在堆上,java堆可用-Xms和-Xmx進(jìn)行內(nèi)存控制,jdk1.7以后,運(yùn)行時(shí)常量池從方法區(qū)移到了堆上。
(2)方法區(qū):用于存儲(chǔ)已被虛擬機(jī)加載的類信息,常量,靜態(tài)變量,即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。
誤區(qū):方法區(qū)不等于永生代
很多人原因把方法區(qū)稱作“永久代”(Permanent Generation),本質(zhì)上兩者并不等價(jià),只是HotSpot虛擬機(jī)垃圾回收器團(tuán)隊(duì)把GC分代收集擴(kuò)展到了方法區(qū),或者說(shuō)是用來(lái)永久代來(lái)實(shí)現(xiàn)方法區(qū)而已,這樣能省去專門為方法區(qū)編寫內(nèi)存管理的代碼,但是在Jdk8也移除了“永久代”,使用Native Memory來(lái)實(shí)現(xiàn)方法區(qū)。
(3)虛擬機(jī)棧:虛擬機(jī)棧中執(zhí)行每個(gè)方法的時(shí)候,都會(huì)創(chuàng)建一個(gè)棧楨用于存儲(chǔ)局部變量表,操作數(shù)棧,動(dòng)態(tài)鏈接,方法出口等信息。
(4)本地方法棧:與虛擬機(jī)發(fā)揮的作用相似,相比于虛擬機(jī)棧為Java方法服務(wù),本地方法棧為虛擬機(jī)使用的Native方法服務(wù),執(zhí)行每個(gè)本地方法的時(shí)候,都會(huì)創(chuàng)建一個(gè)棧幀用于存儲(chǔ)局部變量表,操作數(shù)棧,動(dòng)態(tài)鏈接,方法出口等信息。
(5)程序計(jì)數(shù)器。指示Java虛擬機(jī)下一條需要執(zhí)行的字節(jié)碼指令。
組件的作用:
首先通過(guò)類加載器(ClassLoader)會(huì)把 Java 代碼轉(zhuǎn)換成字節(jié)碼,運(yùn)行時(shí)數(shù)據(jù)區(qū)(Runtime Data Area)再把字節(jié)碼加載到內(nèi)存中,而字節(jié)碼文件只是 JVM 的一套指令集規(guī)范,并不能直接交個(gè)底層操作系統(tǒng)去執(zhí)行,因此需要特定的命令解析器執(zhí)行引擎(Execution Engine),將字節(jié)碼翻譯成底層系統(tǒng)指令,再交由 CPU 去執(zhí)行,而這個(gè)過(guò)程中需要調(diào)用其他語(yǔ)言的本地庫(kù)接口(Native Interface)來(lái)實(shí)現(xiàn)整個(gè)程序的功能。
想要了解跟多關(guān)于java培訓(xùn)課程內(nèi)容歡迎關(guān)注賦能網(wǎng)java培訓(xùn),賦能網(wǎng)除了這些技術(shù)文章外還有免費(fèi)的高質(zhì)量大 java培訓(xùn)課程視頻供廣大學(xué)員下載學(xué)習(xí)。
相關(guān): java培訓(xùn) | Mybatis 中的 PreparedStatement 預(yù)編譯——學(xué)習(xí)java開發(fā)培訓(xùn)技術(shù)好就業(yè)嗎
本文鏈接:
本文章“java培訓(xùn)中jvm 的主要組成部分”已幫助 183 人
免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!
本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579