真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JVM的內(nèi)存數(shù)據(jù)區(qū)域是什么

這期內(nèi)容當(dāng)中的小編將會給大家?guī)碛嘘P(guān)JVM的內(nèi)存數(shù)據(jù)區(qū)域的講解,以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的忻城網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

JAVA程序運行于虛擬機之上,運行時需要內(nèi)存空間。虛擬機執(zhí)行JAVA程序的過程中會把它管理的內(nèi)存劃分為不同的數(shù)據(jù)區(qū)域方便管理。虛擬機管理內(nèi)存數(shù)據(jù)區(qū)域劃分如下圖:

JVM的內(nèi)存數(shù)據(jù)區(qū)域是什么

一、程序計數(shù)器(Program Counter Register)

行號指示器,字節(jié)碼指令的分支、循環(huán)、跳轉(zhuǎn)、異常處理、線程恢復(fù)(CPU切換),每條線程都需要一個獨立的計數(shù)器,線程私有內(nèi)存互不影響,該區(qū)域不會發(fā)生內(nèi)存溢出異常。

二、虛擬機棧(VM Stack)

虛擬機棧(VM Stack)是線程私有的,聲明周期與線程相同,虛擬機棧是Java方法執(zhí)行的內(nèi)存模型,每個方法被執(zhí)行時都會創(chuàng)建一個棧幀,即方法運行期間的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)。

棧幀用于存儲:局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等,每個方法執(zhí)行中都對應(yīng)虛擬機棧幀從入棧到處棧的過程。是一種數(shù)據(jù)結(jié)構(gòu),是虛擬機中的局部變量表,對應(yīng)物理層之上的程序數(shù)據(jù)模型。

局部變量表,是一種程序運行數(shù)據(jù)模型,存放了編譯期可知的各種數(shù)據(jù)類型例如:

Boolean、byte、char、short、int、float、long、double、對象引用類型(對象內(nèi)存地址變量,指針或句柄)。程序運行時,根據(jù)局部變量表分配棧幀空間大小。在運行中,大小是不變的異常類型:stackOverFlowError 線程請求棧深度大于虛擬機允許深度 OutOfMemory 內(nèi)存空間耗盡無法進(jìn)行擴展。

三、本地方法棧(Native Method Stack)

與虛擬機棧類似,虛擬機棧為Java程序服務(wù),本地方法棧支持虛擬機的運行服務(wù),具體實現(xiàn)由虛擬機廠商決定,也會拋出 stackOverFlowError、OutOfMemory異常。

四、堆(Heap)

堆(Heap)是虛擬機管理內(nèi)存中最大的一部分,被所有線程共享,用于存放對象實例(對象、數(shù)組),物理上不連續(xù)的內(nèi)存空間,由于GC收集器,分代收集,所以劃分為:新生代 Eden、From SurVivor空間、To SurVivor空間,allot buffer(分配空間),可能會劃分出多個線程私有的緩沖區(qū),老年代。

五、方法區(qū)(Method Area)

方法區(qū)(Method Area)與堆區(qū)一樣屬于線程共享的內(nèi)存區(qū)域,用于存儲虛擬機加載的類信息、常量、靜態(tài)變量、即時編譯器編譯后的代碼(動態(tài)加載OSGI)等數(shù)據(jù)。理論上屬于java虛擬機的一部分,為了區(qū)分開來叫做 Non-Heap非堆。

這個區(qū)域可以選擇不進(jìn)行垃圾回收,該區(qū)域回收目的主要是常量池的回收,及類型的卸載class,內(nèi)存區(qū)不足時會拋出OutOfMemory異常。

運行時常量池:方法區(qū)的一部分,Class的版本、字段、接口、方法等,及編譯期生成的各種字面量、符號引用,編譯類加載后存放在該區(qū)域。會拋出OutOfMemory異常。

六、直接內(nèi)存(Direct Memory)

直接內(nèi)存(Direct Memory)不屬于虛擬內(nèi)存區(qū)域,是一種基于通道與緩沖區(qū)的IO方式,可以使用本地函數(shù)直接分配堆外內(nèi)存,在堆中存儲引用的外部內(nèi)存地址,通過引用完成對直接引用內(nèi)存的操作,1.4之后提供的NIO顯著提高效率,避免了堆內(nèi)存與Native內(nèi)存的來回復(fù)制操作,不受虛擬機內(nèi)存控制,會拋出OUTOfMemory異常。

上述就是小編為大家分享的JVM的內(nèi)存數(shù)據(jù)區(qū)域,如果您也有類似的疑惑,不妨礙參照上述分析進(jìn)行理解。如果想了解更多相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊。


網(wǎng)站題目:JVM的內(nèi)存數(shù)據(jù)區(qū)域是什么
分享路徑:http://weahome.cn/article/jpphpg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部