溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java虛擬機結(jié)構(gòu)是怎么樣的

發(fā)布時間:2021-12-03 14:24:00 來源:億速云 閱讀:108 作者:小新 欄目:大數(shù)據(jù)

這篇文章給大家分享的是有關(guān)Java虛擬機結(jié)構(gòu)是怎么樣的的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一、JVM主要的結(jié)構(gòu)如下:

Java虛擬機結(jié)構(gòu)是怎么樣的

二、各個區(qū)域功能介紹

1)、方法區(qū)(Method Area):

        (1)用于存儲虛擬機加載的類信息、常量、靜態(tài)變量等,是各個線程共享的內(nèi)存區(qū)域;

        (2)默認最小值為16MB,最大值為64MB,可以通過-XX:PermSize 和 -XX:MaxPermSize 參數(shù)限制方法區(qū)的大??;

        (3)方法區(qū)中還有一部分是運行時常量池,主要用來存儲編譯時生成的字面量和符號引用,常量也可以在運行時產(chǎn)生,如String的intern方法;

        (4)和Java堆一樣不需要連續(xù)的內(nèi)存和可以選擇固定大小或可擴展外,還可以選擇不實現(xiàn)垃圾收集。

2)、棧:

        (1)Java虛擬機棧是線程私有的,生命周期與線程相同。

        (2)每個方法被執(zhí)行的時候都同時創(chuàng)建一個棧幀(stack frame),用于存儲局部變量表,操作棧,動態(tài)鏈接,方法出口等信息。每一個方法執(zhí)行完的過程就對應(yīng)棧幀在棧中進入進出的過程。棧幀由三部分組成:局部變量區(qū)、操作數(shù)棧、幀數(shù)據(jù)區(qū)。

        (3)JVM虛擬機棧中的局部變量表存儲了編譯期可知的各種基本數(shù)據(jù)類型。局部變量表所需要的空間在編譯期就分配完成。

        (4)棧幀是方法運行期的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。

3)、本地方法棧(Native Method Stack):

        (1)本地方法棧為JVM虛擬機使用到的Native方法服務(wù)。

在HotSpot中并不區(qū)分虛擬機棧和本地方法棧

4)、堆(Heap):

        (1)Java虛擬機所管理的內(nèi)存中最大的一塊。

        (2)Java堆是所有線程共享的區(qū)域,在虛擬機啟動時創(chuàng)建。

        (3)內(nèi)存區(qū)域的唯一目的就是存放對象實例,所有的對象實例以及數(shù)組都在堆上分配內(nèi)存。

        (4)Java堆是JVM垃圾回收機制主要管理的內(nèi)存區(qū)域,Java堆可以處于內(nèi)存上不連續(xù)的內(nèi)存空間。

5)、程序計數(shù)器:

        (1)一塊比較小的內(nèi)存空間,它的作用可以看做是當前線程所執(zhí)行的字節(jié)碼的行號指示器

        (2)字節(jié)碼解釋器工作時就是通過改變這個計數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令、分支,循環(huán)、跳轉(zhuǎn)、異常處理、線程恢復等都需要依賴程序計數(shù)器。

6)、運行時常量池:

        (1)運行時常量池是方法區(qū)的一部分。

        (2)Class文件中除了有類的版本、字段、方法接口描述等信息外,還有一項信息是常量池,用于存放編譯期生成的各種字面量和符號引用,這部分內(nèi)容將在類加載

        之后存放到方法區(qū)的運行時常量池。

7)、直接內(nèi)存:

        由于Java引進了NIO,引入了通道和緩沖區(qū)的IO方式,可以調(diào)用Native方法直接分配堆外內(nèi)存,這個堆外內(nèi)存就是本機內(nèi)存,不會影響堆內(nèi)存大小。

感謝各位的閱讀!關(guān)于“Java虛擬機結(jié)構(gòu)是怎么樣的”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI