小編給大家分享一下java虛擬機(jī)是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
東乃網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司成立與2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
什么是JVM?
Java虛擬機(jī)(JVM)是運(yùn)行Java字節(jié)碼的虛擬機(jī),它是java編程語言的核心。當(dāng)我們運(yùn)行程序時,JVM負(fù)責(zé)將字節(jié)代碼轉(zhuǎn)換為特定于機(jī)器的代碼。JVM還依賴于平臺,并提供核心Java函數(shù),如內(nèi)存管理,垃圾收集,安全性等。
JVM被稱為虛擬,因?yàn)樗峁┑慕涌诓灰蕾囉诘讓硬僮飨到y(tǒng)和機(jī)器硬件。這種與硬件和操作系統(tǒng)的獨(dú)立性使得java程序可以在任何地方進(jìn)行一次寫入。
在現(xiàn)實(shí)世界中,JVM是一種規(guī)范,它提供了一個可以執(zhí)行Java字節(jié)碼的運(yùn)行時環(huán)境。
JVM可以做什么?
JVM執(zhí)行以下操作:
1、加載代碼
2、驗(yàn)證代碼
3、執(zhí)行代碼
3、提供運(yùn)行時環(huán)境
JVM提供以下定義:
1、記憶區(qū)
2、類文件格式
3、注冊集
4、垃圾收集堆
5、致命錯誤報告等
JVM架構(gòu)
讓我們來了解一下JVM的內(nèi)部架構(gòu)。它包含有類加載器,內(nèi)存區(qū)域,執(zhí)行引擎等。
1、類加載器
Classloader是JVM的子系統(tǒng),用于加載類文件。每當(dāng)我們運(yùn)行java程序時,它首先由類加載器加載。Java中有三個內(nèi)置的類加載器。
1)、Bootstrap ClassLoader:這是第一個類擴(kuò)展,它是Extension類加載器的超類。它加載rt.jar文件,該文件包含Java Standard Edition的所有類文件,如java.lang包類,java.net包類,java.util包類,java.io包類,java.sql包類等。
2)、Extension ClassLoader:這是Bootstrap的子類加載器和System類加載器的父類加載器。它遍歷位于$ JAVA_HOME / jre / lib / ext目錄中的jar文件。
3)、System / Application ClassLoader:這是Extension類加載器的子類加載器。它從類路徑加載類文件。默認(rèn)情況下,classpath設(shè)置為當(dāng)前目錄。您可以使用“-cp”或“-classpath”開關(guān)更改類路徑。它也被稱為Application類加載器。
2、類(方法)區(qū)域
Method區(qū)域存儲每類結(jié)構(gòu),例如運(yùn)行時常量池,字段和方法數(shù)據(jù),方法的代碼。
3、堆
Heap是分配對象的運(yùn)行時數(shù)據(jù)區(qū)域。
4、堆疊
Java 堆疊存儲幀。Stack包含局部變量和部分結(jié)果,并在方法調(diào)用和返回中起作用。
每個線程都有一個私有JVM堆棧,與線程同時創(chuàng)建。
每次調(diào)用方法時都會創(chuàng)建一個新幀。當(dāng)方法調(diào)用完成時,框架將被銷毀。
5、程序計數(shù)器寄存器(Program Counter Register)
PC(Program Counter)寄存器包含當(dāng)前正在執(zhí)行的Java虛擬機(jī)指令的地址。
6、原生方法堆棧(Native Method Stack)
它包含應(yīng)用程序中使用的所有本機(jī)方法。
7、執(zhí)行引擎(Execution Engine)
它包含:
1)、虛擬處理器
2)、解釋器:讀取字節(jié)碼流然后執(zhí)行指令。
3)、實(shí)時(JIT)編譯器:用于提高性能。JIT同時編譯具有類似功能的部分字節(jié)代碼,因此減少了編譯所需的時間。這里,術(shù)語“編譯器”指的是從Java虛擬機(jī)(JVM)的指令集到特定CPU的指令集的轉(zhuǎn)換器。
8、Java本地接口(Java Native Interface)
Java Native Interface(JNI)是一個框架,它提供了一個接口,用于與另一種語言(如C,C ++,Assembly等)編寫的另一個應(yīng)用程序進(jìn)行通信.Java使用JNI框架將輸出發(fā)送到控制臺或與OS庫交互。
以上是java虛擬機(jī)是什么的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!