溫馨提示×

溫馨提示×

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

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

JVM 內(nèi)存結(jié)構(gòu)

發(fā)布時(shí)間:2020-07-22 17:42:14 來源:網(wǎng)絡(luò) 閱讀:462 作者:灰白世界 欄目:編程語言

JVM 內(nèi)存結(jié)構(gòu)

方法區(qū):也叫永久區(qū),線程共享,用于存儲類結(jié)構(gòu)信息的地方,包括常量池、靜態(tài)變量、構(gòu)造函數(shù)等類型信息,類型信息是由類加載器在類加載時(shí)從類文件中提取出來的,永久區(qū)同樣存在垃圾回收機(jī)制,用為用戶通過加載器加載的一些類同樣會成為垃圾,JVM 會回收一個(gè)未被類引用所占的空間,以使方法區(qū)空間達(dá)到最小

堆:是存儲 Java 對象的地方,是 GC 的主要區(qū)域,同樣是線程共享的主要區(qū)域

Java 虛擬機(jī)棧:存儲基本數(shù)據(jù)類型,局部變量,虛擬機(jī)棧和線程緊密聯(lián)系,每創(chuàng)建一個(gè)線程就會創(chuàng)建一個(gè)對應(yīng)的虛擬機(jī)棧,所以虛擬機(jī)棧是線程私有的,這個(gè)棧中還包括一個(gè)個(gè)的棧幀,沒吊用一個(gè)方法就會向棧中創(chuàng)建并壓入一個(gè)棧幀,每個(gè)方法從執(zhí)行到結(jié)束的過程,就對應(yīng)了虛擬機(jī)棧從入棧到出戰(zhàn)的過程

本地方法棧:本地方法棧和虛擬機(jī)棧功能類似,只不過虛擬機(jī)棧為 Java 方法服務(wù),而本地方法棧為外部方法服務(wù),外部方法用 native 標(biāo)識

本地方法接口:Java 本地接口(JNI)允許運(yùn)行在Java虛擬機(jī)(JVM)上的代碼調(diào)用本地程序和類庫,或者被它們調(diào)用,這些程序和類庫可以是其它語言編寫的,比如 C、C++ 或者匯編語言

直接內(nèi)存:堆外內(nèi)存,又被稱為直接內(nèi)存,這部分內(nèi)存不是由 JVM管理和回收的,需要我們手動的回收,堆內(nèi)內(nèi)存是屬于 JVM 的,由 JVM 進(jìn)行分配和管理,屬于"用戶態(tài)",而堆外內(nèi)存是由操作系統(tǒng)管理的,屬于"內(nèi)核態(tài)",在 JDK1.4 中加入了 NIO 類,它可以調(diào) native 函數(shù)庫直接分配堆外內(nèi)存,然后通過 Java 堆中的 DirectByteBuffer 對象來指向這塊內(nèi)存,進(jìn)行內(nèi)存分配等工作

執(zhí)行引擎:虛擬機(jī)核心的組件就是執(zhí)行引擎,它負(fù)責(zé)執(zhí)行虛擬機(jī)的字節(jié)碼,一般戶先進(jìn)行編譯成機(jī)器碼后執(zhí)行

運(yùn)行時(shí)常量池:Class 文件中除了有類的版本、字段、方法、接口等描述信息外,還有一項(xiàng)信息是常量池,用于存放編譯期生成的各種字面量和符號引用,這部分內(nèi)容將在加載后進(jìn)入方法區(qū)的運(yùn)行時(shí)常量池中存

PC:程序計(jì)數(shù)器是一塊較小的內(nèi)存空間,它可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器 ;在虛擬機(jī)的概念模型里(僅僅是概念模型,各種虛擬機(jī)可能會通過一些更高效的方式去實(shí)現(xiàn)),字節(jié)碼解釋器工作時(shí),就是通過改變這個(gè)計(jì)數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令,分支、循環(huán)、跳準(zhǔn)、異常處理、線程恢復(fù)等基礎(chǔ)功能都需要依賴這個(gè)計(jì)數(shù)器來完成

向AI問一下細(xì)節(jié)

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

AI