JAVA內(nèi)存區(qū)域與內(nèi)存溢出異常----讀后感(1)

上圖先

1.1 程序計(jì)數(shù)器

介紹:

程序計(jì)數(shù)器是一塊較小的內(nèi)存空間,它可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器。

如果線程正在執(zhí)行JAVA方法,這個(gè)計(jì)數(shù)器記錄的是正在執(zhí)行的虛擬機(jī)字節(jié)碼指令的地址;如果正在執(zhí)行的是Native方法,這個(gè)計(jì)數(shù)器值為空。

問(wèn)題:

此內(nèi)存區(qū)域是唯一一個(gè)沒(méi)有規(guī)定任務(wù)OutOfMemoryError情況的區(qū)域

1.2 JAVA虛擬機(jī)棧?

介紹:

虛擬機(jī)棧描述的是JAVA方法執(zhí)行的內(nèi)存模型:每個(gè)方法在執(zhí)行的同時(shí)都會(huì)創(chuàng)建一個(gè)幀棧用于存儲(chǔ)局部變量表,操作數(shù)棧,動(dòng)態(tài)鏈表,方法出口等信息。

我們平時(shí)所說(shuō)的堆內(nèi)存和棧內(nèi)存指的就是現(xiàn)在講的虛擬機(jī)棧,或者說(shuō)是虛擬機(jī)棧中局部變量表的部分。

問(wèn)題:

這個(gè)區(qū)域規(guī)定了兩種異常狀態(tài):如果線程請(qǐng)求的棧深度大雨虛擬機(jī)所允許的深度,將拋出StackOverflowError異常;如果虛擬機(jī)棧可以動(dòng)態(tài)擴(kuò)展時(shí)無(wú)法申請(qǐng)到足夠內(nèi)存則會(huì)拋出OutOfMemoryError異常。

1.3本地方法棧

介紹:

本地方法棧為Native方法服務(wù)。

問(wèn)題:

和JAVA虛擬機(jī)棧異常相同,會(huì)拋出StackOverflowError異常和OutOfMemoryError異常

1.4 JAVA堆

介紹:

JAVA虛擬機(jī)所管理的內(nèi)存中最大的一塊就是JAVA堆內(nèi)存。JAVA堆是被所有線程共享的一塊內(nèi)存區(qū)域,在虛擬機(jī)創(chuàng)建啟動(dòng)時(shí)創(chuàng)建。此內(nèi)存唯一目的就是存放對(duì)象實(shí)例。

JAVA堆是垃圾收集器管理的主要區(qū)域,因此很多時(shí)候稱(chēng)為“”GC堆“”

問(wèn)題:

如果在堆內(nèi)存中沒(méi)有內(nèi)存完成實(shí)例分配,并且堆也無(wú)法再擴(kuò)展時(shí),將會(huì)拋出OutOfMemoryError異常。

1.5 方法區(qū)

介紹:

方法區(qū)與JAVA堆一樣,是個(gè)線程共享的內(nèi)存區(qū)域,用于存貯已經(jīng)被加載的類(lèi)信息,常量,靜態(tài)變量,即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。

問(wèn)題:

當(dāng)方法區(qū)無(wú)法滿足內(nèi)存分配需求時(shí),將拋出OutOfMemoryError異常。

1.6 運(yùn)行時(shí)常量池

介紹:

運(yùn)行時(shí)常量池是方法區(qū)的一部分。用于存放編譯期生成的各種字面量和符號(hào)引用,這部分內(nèi)容將在類(lèi)加載后進(jìn)入方法區(qū)的運(yùn)行時(shí)常量池中存放。

問(wèn)題:

當(dāng)常量池?zé)o法再申請(qǐng)到內(nèi)存時(shí)將拋出OutOfMemoryError異常。

1.7 直接內(nèi)存

介紹:

直接內(nèi)存并不是虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)的一部分,也不是JAVA虛擬機(jī)規(guī)范中定義的內(nèi)存區(qū)域,但這部分內(nèi)存也被頻繁使用。

問(wèn)題:

服務(wù)器管理員在配置虛擬機(jī)參數(shù)時(shí),會(huì)根據(jù)實(shí)際內(nèi)存設(shè)置-Xmx等參數(shù)信息,但經(jīng)常忽略直接內(nèi)存,使得各個(gè)內(nèi)存區(qū)域總和大于物理內(nèi)存限制(包括物理的和操作系統(tǒng)的限制),從而導(dǎo)致動(dòng)態(tài)擴(kuò)展時(shí)拋出OutOfMemoryError異常。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容