這篇文章主要為大家展示了“JVM特點(diǎn)有哪些”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“JVM特點(diǎn)有哪些”這篇文章吧。
于都ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
虛擬機(jī)(Virtual Machine)指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。在實(shí)體計(jì)算機(jī)中能夠完成的工作在虛擬機(jī)中都能夠?qū)崿F(xiàn)。在計(jì)算機(jī)中創(chuàng)建虛擬機(jī)時(shí),需要將實(shí)體機(jī)的部分硬盤和內(nèi)存容量作為虛擬機(jī)的硬盤和內(nèi)存容量。每個(gè)虛擬機(jī)都有獨(dú)立的CMOS、硬盤和操作系統(tǒng),可以像使用實(shí)體機(jī)一樣對虛擬機(jī)進(jìn)行操作。
JVM是Java-Virtual-Machine的縮寫,即Java虛擬機(jī),JVM是一種用于計(jì)算設(shè)備的規(guī)范,它是一個(gè)虛構(gòu)出來的計(jì)算機(jī),是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。
首先一次編譯處處運(yùn)行是學(xué)習(xí)Java語言都知道的事情,其實(shí)并不是Java語言跨平臺(tái),是JVM跨平臺(tái),Jvm運(yùn)行時(shí)并不是執(zhí)行Java文件,而是執(zhí)行編譯后的.class文件。
字節(jié)碼
字節(jié)碼文件即JVM可以識(shí)別并執(zhí)行的二進(jìn)制文件,不同的編程語言經(jīng)過編譯器編譯處理之后,轉(zhuǎn)換成統(tǒng)一的字節(jié)碼規(guī)范文件,這樣JVM就可以執(zhí)行。
跨平臺(tái)
跨平臺(tái)的特性即JVM虛擬機(jī)可以運(yùn)行在不同的計(jì)算機(jī)系統(tǒng)上,例如經(jīng)常使用的Linux系統(tǒng),MacOS系統(tǒng),Win系統(tǒng),一次編譯,處處運(yùn)行就是這樣理解的。
跨語言
隨著JVM的不斷發(fā)展和優(yōu)化,很多語言都借助JVM的能力,各種編程語言經(jīng)過編譯,轉(zhuǎn)換為字節(jié)碼文件,JVM都可以識(shí)別,這也是現(xiàn)在Java體系下業(yè)務(wù)編程經(jīng)?;煺Z言的原因。
注意:現(xiàn)在和后續(xù)Jvm系列文章都是基于HotSpot-VM和JDK1.8+版本的基礎(chǔ)之上。
Jvm的整體結(jié)構(gòu)大致如下:
類加載器用來加載Java類到JVM虛擬機(jī)中,源代碼程序.java文件在經(jīng)過編譯器編譯之后就被轉(zhuǎn)換成字節(jié)代碼.class文件,類加載器負(fù)責(zé)讀取字節(jié)代碼,并轉(zhuǎn)換成java.lang.Class類的一個(gè)實(shí)例。
元數(shù)據(jù)區(qū)
JDK1.8開始的說法,之前稱為方法區(qū)Method-Area,存儲(chǔ)已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。
堆區(qū)
所有線程共享的一塊內(nèi)存區(qū)域,虛擬機(jī)啟動(dòng)時(shí)被創(chuàng)建用來存放對象實(shí)例。
JVM棧
可以參考了解棧的數(shù)據(jù)結(jié)構(gòu),存放Java方法執(zhí)行的內(nèi)存模型,在Java開發(fā)中,一個(gè)功能實(shí)現(xiàn)需要多個(gè)子程序方法配合,程序執(zhí)行時(shí)跳往子程序前,會(huì)將下個(gè)指令的地址存到堆棧中,直到子程序執(zhí)行完后再將地址取出,退回到原來的程序中。
本地方法棧
本地方法棧和虛擬機(jī)棧的功能類似,為JVM調(diào)用native方法時(shí)服務(wù)。
程序計(jì)數(shù)器
相對較小的一塊內(nèi)存空間,作用可以理解是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器。
Java虛擬機(jī)最核心的組成部分,輸入的是字節(jié)碼,處理過程是字節(jié)碼解析,輸出執(zhí)行結(jié)果。
這里說的JVM生命周期,指JVM執(zhí)行Java程序時(shí)的周期:
啟動(dòng)初始化:啟動(dòng)時(shí)通過引導(dǎo)類加載器創(chuàng)建初始類完成;
程序執(zhí)行:從main方法開始,執(zhí)行Java程序,直到程序執(zhí)行完結(jié)束;
虛擬機(jī)退出:程序正常執(zhí)行結(jié)束,或者發(fā)生異常、錯(cuò)誤等而造成終止,也可以調(diào)用exit退出方法;
HotSpot是Java體系下使用最多的虛擬機(jī),它結(jié)合了最新的內(nèi)存模型,垃圾收集器和自適應(yīng)優(yōu)化器,為使用許多先進(jìn)技術(shù)的Java應(yīng)用程序提供了最佳性能。
主要原因:使用多,大部分的Java運(yùn)行環(huán)境都依賴HotSpot虛擬機(jī)。
以上是“JVM特點(diǎn)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!