????????在整個程序執(zhí)行過程中燥撞,JVM會用一段空間來存儲程序執(zhí)行期間需要用到的數(shù)據(jù)和相關(guān)信息酝惧,這段空間一般被稱作為Runtime Data Area(運行時數(shù)據(jù)區(qū))瞎饲,也就是我們常說的JVM內(nèi)存沈善。
java程序執(zhí)行過程
運行時數(shù)據(jù)區(qū)通常包括這幾個部分:程序計數(shù)器(Program Counter Register)乡数、Java棧(VM Stack)、本地方法棧(Native Method Stack)闻牡、方法區(qū)(Method Area)净赴、堆(Heap
①程序計數(shù)器:用來指示執(zhí)行哪條指令的。
②java棧:Java棧中存放的是 "棧幀"罩润,每個棧幀對應(yīng)一個被調(diào)用的方法玖翅,在棧幀中包括局部變量表、操作數(shù)棧割以、運行時常量池金度、方法返回地址谐丢、附加信息侯勉。
③本地方法棧:執(zhí)行本地方法服務(wù)的。
④方法區(qū)-("永久代"):線程共享的區(qū)域旨椒,存儲了每個類的信息祝峻、靜態(tài)變量魔吐、常量以及編譯器編譯后的代碼等扎筒。
⑤堆:線程共享的區(qū)域莱找,Java中的堆是用來存儲對象、數(shù)組的嗜桌。這部分空間也是Java垃圾收集器管理的主要區(qū)域奥溺。
jvm內(nèi)存劃分