程序計(jì)數(shù)器(Program Counter Register)
這和計(jì)算機(jī)操作系統(tǒng)中的程序計(jì)數(shù)器類似,在計(jì)算機(jī)操作系統(tǒng)中程序計(jì)數(shù)器表示這個(gè)進(jìn)程要執(zhí)行的下個(gè)指令的地址,對(duì)于JVM中的程序計(jì)數(shù)器可以看做是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器,每個(gè)線程都有一個(gè)程序計(jì)數(shù)器(這很好理解,每個(gè)線程都有在執(zhí)行任務(wù),如果線程切換后要能保證能恢復(fù)到正確的位置),重要的一點(diǎn)——程序計(jì)數(shù)器,這是JVM規(guī)范中唯一一個(gè)沒(méi)有規(guī)定會(huì)導(dǎo)致OutOfMemory(內(nèi)存泄露,下文簡(jiǎn)稱OOM)的區(qū)域。換句話上圖中的其余4個(gè)區(qū)域,都有可能導(dǎo)致OOM。
☆虛擬機(jī)棧(Java Virtual Machine Stacks)
這塊內(nèi)存區(qū)域就是我們常常說(shuō)的“棧”,我們所熟知的是它用于存放變量,也就是說(shuō)例如:
int i = 0;