JAVA虚拟机栈
JAVA虛擬機(jī)棧幾個(gè)重要概念
java 虛擬機(jī)棧 = java virtual machine stacks = jvms
1、JVMS 線程私有,生命周期與線程相同
2、JVMS 描述的是JAVA方法執(zhí)行的內(nèi)存模型:JVMS在方法執(zhí)行時(shí)會(huì)創(chuàng)建一個(gè)“棧幀” stack frame,用于記錄局部變量表、操作數(shù)棧、動(dòng)態(tài)鏈接、方法出口等,每一個(gè)方法從調(diào)用到完成的過(guò)程,就是一個(gè)棧幀在JVMS中入棧到出棧的過(guò)程
3、局部變量表存放基本數(shù)據(jù)類(lèi)型、對(duì)象引用、returnAddress(字節(jié)碼指令地址),long 和 double 占用2個(gè)局部變量空間(slot),其它占用1個(gè)空間;
???? 局部變量表所需要的內(nèi)存空間在編譯期間完成分配,當(dāng)進(jìn)入一個(gè)方法時(shí),這個(gè)方法在幀中需要分配多大的局部變量空間是完全確定的,方法運(yùn)行期間無(wú)法改變局部變量表的大小
4、JVMS兩種異常
??? (1) 線程請(qǐng)求的棧深度大于JVM允許的深度,會(huì)拋出StackOverflowError異常
??? (2) JVM可以動(dòng)態(tài)擴(kuò)展,如果擴(kuò)展時(shí)無(wú)法申請(qǐng)到足夠內(nèi)存,會(huì)拋出OutOfMemoryError異常
轉(zhuǎn)載于:https://www.cnblogs.com/zxcgy/p/6648660.html
總結(jié)
- 上一篇: 理解列存储索引
- 下一篇: 喵哈哈村的魔法考试 Round #10