學習了一些與Java虛擬機相關(guān)的比較基本的知識,還是得寫一寫加深印象。

運行時數(shù)據(jù)區(qū)
程序計數(shù)器:線程私有,生命周期與線程的生命周期一樣。程序計數(shù)器用于標記線程執(zhí)行的字節(jié)碼的位置。字節(jié)碼解釋器,通過改變計數(shù)器的值來選取執(zhí)行的字節(jié)碼指令如分支、循環(huán)、跳轉(zhuǎn)、線程恢復。
虛擬機棧:線程私有,生命周期與線程的生命周期一樣。在線程調(diào)用Java方法時創(chuàng)建棧幀用于儲存局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口。其中局部變量表存放了基本數(shù)據(jù)類型,對象引用和returnAdress類型。
本地方法棧:線程私有,生命周期與線程的生命周期一樣。線程調(diào)用本地方法時創(chuàng)建棧幀,過程類似于虛擬機棧。
堆:線程共享,用于儲存實例變量。
方法區(qū):線程共享。用于存儲編譯后Java方法的類相關(guān)的東西,類信息、常量、靜態(tài)變量等。運行時常量池在方法區(qū)中,包含字面量、符號引用、直接引用。常量池在Class文件中,包含字面量和符號引用,常量池在類加載進方法區(qū)運行時,會被放進運行時常量池。