文章內(nèi)容參考<<深入理解java虛擬機(jī)>>,內(nèi)容是自己總結(jié)的觀點(diǎn),如果有疑問,請參展<<深入理解java虛擬機(jī)>>
1.java虛擬機(jī)內(nèi)存區(qū)域
1.運(yùn)行時內(nèi)存數(shù)據(jù)區(qū)域
運(yùn)行時數(shù)據(jù)區(qū)域圖.
1.程序技術(shù)器Program Counter Register:(線程私有)
? ? 特點(diǎn):空間小,當(dāng)前線程所執(zhí)行的字節(jié)碼的行號指示器.
? ? 解釋:虛擬機(jī)線程在執(zhí)行時,需要根據(jù)線程計(jì)數(shù)器的值來選擇如何執(zhí)行下一條指令,例如:分支,循環(huán),異常等
? ? 拓展1:每一個處理器內(nèi)核都只會執(zhí)行一條線程,每一個線程都會創(chuàng)建一個程序計(jì)數(shù)器
? ? 深入:當(dāng)虛擬機(jī)執(zhí)行的是java方法,程序計(jì)數(shù)器記錄的是正在執(zhí)行的字節(jié)碼指令的地址,如果是native方法,則執(zhí)行的是null.
? ? 拓展2:native方法是java虛擬機(jī)調(diào)用非java語言的接口,native是關(guān)鍵字 ,被native修飾的方法不用寫方法體,因?yàn)樵谕獠恳呀?jīng)調(diào)用其他語言的代碼.
? ? ? ? ? ? ? native關(guān)鍵字不能與abstract關(guān)鍵字共用,因?yàn)閚ative是有方法體的.
2. 虛擬機(jī)棧java Virtual Machine Stacks:(線程私有)
? ? 特點(diǎn):先進(jìn)先出.
? ? 解釋:用于存放對象引用,以及基本數(shù)據(jù)類型.
3.本地方法棧Native Method Stack:(線程私有)
? ? 特點(diǎn):虛擬機(jī)并沒有對他進(jìn)行規(guī)范,所以可以自由實(shí)現(xiàn).
? ??解釋:用戶存儲Native方法
未完待續(xù)...