谈谈对jvm的理解
一、JVM介紹:
JVM是Java Virtual Machine(Java虛擬機(jī))的縮寫(xiě),它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。
Java虛擬機(jī)包括一套字節(jié)碼指令集、一組寄存器、一個(gè)棧、一個(gè)垃圾回收堆和一個(gè)存儲(chǔ)方法域。 JVM屏蔽了與具體操作系統(tǒng)平臺(tái)相關(guān)的信息,使Java程序只需生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上不加修改地運(yùn)行。JVM在執(zhí)行字節(jié)碼時(shí),實(shí)際上最終還是把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令執(zhí)行。
JVM是JRE的一部分。JVM有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。Java語(yǔ)言最重要的特點(diǎn)就是跨平臺(tái)運(yùn)行。使用JVM就是為了支持與操作系統(tǒng)無(wú)關(guān),實(shí)現(xiàn)跨平臺(tái)。
二、JVM作用
Java中的所有類(lèi),必須被裝載到j(luò)vm中才能運(yùn)行,這個(gè)裝載工作是由jvm中的類(lèi)裝載器完成的,類(lèi)裝載器所做的工作實(shí)質(zhì)是把類(lèi)文件從硬盤(pán)讀取到內(nèi)存中。
所有的java程序會(huì)首先被編譯為.class的類(lèi)文件,這種類(lèi)文件可以在虛擬機(jī)上執(zhí)行。也就是說(shuō)class并不直接與機(jī)器的操作系統(tǒng)相對(duì)應(yīng),而是經(jīng)過(guò)虛擬機(jī)間接與操作系統(tǒng)交互,由虛擬機(jī)將程序解釋給本地系統(tǒng)執(zhí)行。當(dāng)然只有JVM還不能成class的執(zhí)行,因?yàn)樵诮忉宑lass的時(shí)候JVM需要調(diào)用解釋所需要的類(lèi)庫(kù)lib,而jre包含lib類(lèi)庫(kù)。
?
總結(jié)