1狭园、堆
1.1读处、存儲Java對象(例如數(shù)組)。
1.2妙啃、在不考慮本地內(nèi)存的情況下档泽,JVM堆是JVM中占用內(nèi)存最大的區(qū)域。
1.3揖赴、線程共享馆匿。
1.4、Java堆是垃圾回收器管理的內(nèi)存區(qū)域燥滑。
2渐北、方法區(qū)
2.1、是JVM規(guī)范中的抽象概念铭拧,具體實現(xiàn)例如HotSpot的永久代與元空間赃蛛。永久代在方法區(qū)中,需要通過-XX:PermSize和-XX:MaxPermSize設(shè)置內(nèi)存大小搀菩,內(nèi)存不足時會導(dǎo)致OOM呕臂;元空間使用本地內(nèi)存,默認(rèn)無內(nèi)存上限肪跋,支持通過-XX:MetaspaceSize和-XX:MaxMetaspaceSize設(shè)置內(nèi)存大小歧蒋。
2.2、存儲類信息、常量谜洽、靜態(tài)變量萝映、即時編譯后的字面量與符號引用等數(shù)據(jù)。
2.3阐虚、線程共享序臂。
3、Java虛擬機(jī)棧
3.1实束、存儲基本數(shù)據(jù)類型(byte奥秆、short、int磕洪、long吭练、float、double析显、boolean鲫咽、char)與對象的引用。
3.2谷异、線程獨(dú)占分尸。
3.3、是Java方法執(zhí)行的區(qū)域歹嘹,每個方法被調(diào)用時都會創(chuàng)建一個棧幀并入棧箩绍,當(dāng)方法正常返回或者向上拋出異常時,棧幀就會出棧尺上。
3.4材蛛、棧幀的組成
3.4.1、局部變量表
包含方法執(zhí)行過程中的變量怎抛,編譯時確定卑吭。
3.4.2、操作數(shù)棧
操作變量并執(zhí)行方法的模型马绝。
3.4.3豆赏、返回地址
將當(dāng)前程序執(zhí)行的下一條指令地址入棧,用于方法返回時繼續(xù)執(zhí)行富稻。
3.4.4掷邦、動態(tài)鏈接
將當(dāng)前方法在運(yùn)行時常量池的符號引用轉(zhuǎn)化為直接引用的過程。
4椭赋、本地方法棧
4.1抚岗、調(diào)用native修飾的本地方法的區(qū)域。
4.2哪怔、線程獨(dú)占宣蔚。
5廷痘、程序計數(shù)器
5.1、指向當(dāng)前線程正在執(zhí)行的字節(jié)碼指令件已,描述當(dāng)前線程執(zhí)行的進(jìn)度。
5.2元暴、線程獨(dú)占篷扩。
5.3、用于保證程序在線程切換時仍能按順序執(zhí)行茉盏。
6鉴未、執(zhí)行引擎
執(zhí)行Java字節(jié)碼指令的模塊。
7鸠姨、本地引擎
執(zhí)行本地方法的模塊铜秆。
8、本地方法庫
執(zhí)行本地操作系統(tǒng)相關(guān)指令的模塊讶迁。