為什么棧不用垃圾回收器回收?為什么程序計數(shù)器沒有OOM?

1.虛擬機棧不用垃圾回收器?

虛擬機棧里的棧幀即對應(yīng)代碼中的一個方法。代碼運行的過程,即棧幀入棧出棧的過程。

一個方法執(zhí)行完,棧幀出棧后,即被銷毀。只有入棧出棧這樣簡單的操作,不需要設(shè)計復(fù)雜的垃圾回收算法來回收。隨著方法的執(zhí)行,線程的結(jié)束正?;厥占纯伞?/p>

在遞歸函數(shù)中,該方法還沒有結(jié)束,就一直不會出棧,如果循環(huán)的次數(shù)過多,??臻g有被擠爆的可能。會出現(xiàn)StackOverflowError 棧溢出。棧溢出也是內(nèi)存溢出的一種情況??赏ㄟ^-Xss (stack size)設(shè)置棧大小。

2.程序計數(shù)器沒有OOM?

程序計數(shù)器(Program Counter Register)也稱PC寄存器。是運行時數(shù)據(jù)區(qū)里唯一一塊沒有Out of Memory的區(qū)域。

只存下一個字節(jié)碼指令的地址,消耗內(nèi)存小且固定,無論方法多深,他只存一條。

只針對一個線程,隨著線程的結(jié)束而銷毀。

3.線程是如何創(chuàng)建和銷毀的?

J2SE中 main函數(shù)即是主線程,程序執(zhí)行完后自動銷戶。

Thread也可以創(chuàng)建多線程。

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

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