黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 JVM虛擬機(jī)的架構(gòu)

JVM虛擬機(jī)的架構(gòu)

更新時(shí)間:2021-11-19 09:47:06 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽940次

JVM(Java Virtual Machine)是一個(gè)抽象的機(jī)器。它是一種提供運(yùn)行時(shí)環(huán)境的規(guī)范,可以在其中執(zhí)行 java 字節(jié)碼。

JVM 可用于許多硬件和軟件平臺(tái)(即 JVM 依賴于平臺(tái))。

什么是JVM

這是:

一個(gè)規(guī)范,其中Java虛擬機(jī)的工作被指定。但是實(shí)現(xiàn)提供者可以獨(dú)立選擇算法。它的實(shí)現(xiàn)已經(jīng)由 Oracle 和其他公司提供。

一個(gè)實(shí)現(xiàn)它的實(shí)現(xiàn)被稱為 JRE(Java 運(yùn)行時(shí)環(huán)境)。

運(yùn)行時(shí)實(shí)例每當(dāng)您在命令提示符下編寫(xiě) java 命令來(lái)運(yùn)行 java 類時(shí),就會(huì)創(chuàng)建一個(gè) JVM 實(shí)例。

它能做什么

JVM 執(zhí)行以下操作:

加載代碼

驗(yàn)證代碼

執(zhí)行代碼

提供運(yùn)行環(huán)境

JVM 為以下各項(xiàng)提供了定義:

存儲(chǔ)區(qū)

類文件格式

寄存器組

垃圾收集堆

致命錯(cuò)誤報(bào)告等。

JVM架構(gòu)

下面我們來(lái)了解一下JVM的內(nèi)部架構(gòu)。它包含類加載器、內(nèi)存區(qū)、執(zhí)行引擎等。

1.類加載器

Classloader是JVM的一個(gè)子系統(tǒng),用于加載類文件。每當(dāng)我們運(yùn)行 java 程序時(shí),它首先由類加載器加載。Java 中有三個(gè)內(nèi)置的類加載器。

(1)Bootstrap ClassLoader:這是第一個(gè)類加載器,它是 Extension 類加載器的超類。它加載rt.jar文件,其中包含 Java 標(biāo)準(zhǔn)版的所有類文件,如 java.lang 包類、java.net 包類、java.util 包類、java.io 包類、java.sql 包類等。

(2)擴(kuò)展類加載器:這是 Bootstrap 的子類加載器和系統(tǒng)類加載器的父類加載器。它加載位于$JAVA_HOME/jre/lib/ext目錄中的 jar 文件。

(3)System/Application ClassLoader:這是擴(kuò)展類加載器的子類加載器。它從類路徑加載類文件。默認(rèn)情況下,類路徑設(shè)置為當(dāng)前目錄。您可以使用“-cp”或“-classpath”開(kāi)關(guān)更改類路徑。它也稱為應(yīng)用程序類加載器。

//Let's see an example to print the classloader name  
public class ClassLoaderExample  
{  
    public static void main(String[] args)  
    {  
        // Let's print the classloader name of current class.   
        //Application/System classloader will load this class  
        Class c=ClassLoaderExample.class;  
        System.out.println(c.getClassLoader());  
        //If we print the classloader name of String, it will print null because it is an  
        //in-built class which is found in rt.jar, so it is loaded by Bootstrap classloader  
        System.out.println(String.class.getClassLoader());  
    }  
}     

輸出:

sun.misc.Launcher$AppClassLoader@4e0e2f2a 
null

這些是 Java 提供的內(nèi)部類加載器。如果要?jiǎng)?chuàng)建自己的類加載器,則需要擴(kuò)展 ClassLoader 類。

2.類(方法)區(qū)

類(方法)區(qū)存儲(chǔ)每個(gè)類的結(jié)構(gòu),例如運(yùn)行時(shí)常量池、字段和方法數(shù)據(jù)、方法代碼。

3.堆

它是分配對(duì)象的運(yùn)行時(shí)數(shù)據(jù)區(qū)。

4.堆棧

Java Stack 存儲(chǔ)幀。它保存局部變量和部分結(jié)果,并在方法調(diào)用和返回中起作用。

每個(gè)線程都有一個(gè)私有 JVM 堆棧,與線程同時(shí)創(chuàng)建。

每次調(diào)用方法時(shí)都會(huì)創(chuàng)建一個(gè)新框架。框架在方法調(diào)用完成時(shí)被銷毀。

5.程序計(jì)數(shù)器寄存器

PC(程序計(jì)數(shù)器)寄存器包含當(dāng)前正在執(zhí)行的Java虛擬機(jī)指令的地址。

6.本地方法棧

它包含應(yīng)用程序中使用的所有本機(jī)方法。

7.執(zhí)行引擎

它包含了:

虛擬處理器

解釋器:讀取字節(jié)碼流然后執(zhí)行指令。

即時(shí)(JIT)編譯器:用于提高性能。JIT 同時(shí)編譯具有相似功能的部分字節(jié)碼,從而減少編譯所需的時(shí)間。這里,術(shù)語(yǔ)“編譯器”是指從 Java 虛擬機(jī) (JVM) 的指令集到特定 CPU 的指令集的翻譯器。

8.Java 本地接口

Java Native Interface (JNI) 是一個(gè)框架,它提供了一個(gè)接口來(lái)與用另一種語(yǔ)言(如 C、C++、Assembly 等)編寫(xiě)的另一個(gè)應(yīng)用程序進(jìn)行通信。Java 使用 JNI 框架將輸出發(fā)送到控制臺(tái)或與操作系統(tǒng)庫(kù)交互。

通過(guò)上述相信大家對(duì)JVM虛擬機(jī)的架構(gòu)已經(jīng)有所了解,若想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java虛擬機(jī)視頻,里面有更多的知識(shí)在等著大家去學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 黄色福利网站 | 青草视频网站在线观看 | 噜噜色.com | a一级免费视频 | 中国国产高清一级毛片 | 日韩欧美在线综合网 | 久久精品日日躁精品 | 麒麟色欧美影院在线播放 | 天天综合天天看夜夜添狠狠玩 | 日本人69视频 | 日本三黄色大 | 97公开免费视频 | 在线成人免费视频 | 一个b两个40分麻豆 一个色亚洲 | 日韩高清一区二区三区不卡 | 亚欧日韩毛片在线看免费网站 | 成人在线观看视频免费 | 天天做天天爱天天干 | 免费观看成年的网站 | 久久精品国产久精国产果冻传媒 | 先锋影音国产精品 | 欧美久久一区二区三区 | 九九99久久精品午夜剧场免费 | 色噜噜狠狠狠综合曰曰曰88av | 亚洲日本一区二区三区高清在线 | 五月激情综合 | 毛片免费看看 | 无码中文资源在线播放 | 日日热| 久久久无码精品亚洲日韩按摩 | 日韩三级伦理 | 国产精品400部自产在线观看 | 91精品欧美激情在线播放 | 欧美国产日本 | 亚洲午夜久久久精品影院视色 | 欧美日韩一区二区三区在线观看 | 九九热久久免费视频 | h视频在线免费观看 | 国产精品成人免费观看 | 午夜小视频在线播放 | 日韩精品成人免费观看 |