image.png
PC寄存器
- 每一個線程擁有一個PC寄存器
- 在線程創(chuàng)建時創(chuàng)建
- 指向下一條指令的地址
- 執(zhí)行本地方法時揍鸟,PC的值為undefined
方法區(qū)
- 保存裝載的類信息流强,常量犀呼,常量池,即時編譯器編譯后的代碼等數(shù)據(jù)
- 類的版本
- 字段
- 方法
- 接口
- 通常和永久區(qū)關(guān)聯(lián)在一起
- 垃圾回收在方法區(qū)的行為
- 異常的定義
JDK6時鸿竖,String等常量信息置于方法區(qū)
JDK7時沧竟,已經(jīng)移到了堆
Java堆
- 和程序開發(fā)密切相關(guān)
- 應(yīng)用系統(tǒng)對象都保存在Java堆中
- 所有線程共享Java堆
- 對分代GC來說,堆也是分代的
- GC的主要工作區(qū)間
image.png
Java棧
基本類型缚忧、運算,指向堆內(nèi)存的指針線程私有杈笔,其生命周期和線程相同棧由一系列幀組成幀保存一個方法的局部變量闪水、操作數(shù)棧、常量池指針每一次方法調(diào)用創(chuàng)建一個幀蒙具,并壓棧
Java虛擬機棧
虛擬機棧描述的是Java方法執(zhí)行的動態(tài)內(nèi)存模型
-
棧幀
- 每個方法執(zhí)行球榆,都會創(chuàng)建一個棧幀,伴隨著方法從創(chuàng)建到執(zhí)行完成禁筏。用與存儲局部變量表持钉,操作數(shù),動態(tài)鏈接篱昔,方法出口等
-
局部變量表
- 存放編譯器可知的各種基本數(shù)據(jù)類型每强,引用類型,returnAddress類型
大小
StackOverFlow
本地方法棧
- 虛擬機棧為虛擬機執(zhí)行Java方法服務(wù)
- 本地方法棧為虛擬去執(zhí)行native方法服務(wù)
程序計數(shù)器
- 是一個非常小的內(nèi)存空間州刽,它可以看作是當前線程所執(zhí)行的字節(jié)碼的行號指示器空执。
- 程序計數(shù)器處于線程獨占區(qū)
- 如果線程執(zhí)行的是Java方法,則計數(shù)器記錄的是正在執(zhí)行的虛擬機字節(jié)碼指令的地址穗椅。如果正在執(zhí)行的是nativie方法辨绊,則這個計數(shù)器的指為undefined
- 此區(qū)域是唯一一個在Java虛擬機規(guī)范中沒有規(guī)定任何OutOfMemoryError情況的區(qū)域
對象的創(chuàng)建
JVM堆內(nèi)存
-
JDK1.8之后
image.png -
JDK1.8之前
image.png