JVM虚拟机栈
2021-04-16 21:48:56 22 举报
JVM虚拟机栈
作者其他创作
大纲/内容
动态链接
栈帧3
用于计算的临时存储区域,局部变量表中byte、short、char压栈前(bipush)会转为int,虚拟机指令基本都是对操作数栈的操作
局部变量表
方法1
栈帧4
操作数栈
JVM虚拟机栈是线程私有的,每个线程都有一个虚拟机栈,其内部保存着一个个栈帧,对应着每个方法的调用。JVM允许允许栈是动态变化的或者是固定不变的。
场景:递归调用,而且递归方法没有出口就会导致栈内存溢出
局部变量表保存着局部变量和参数局部变量表是以变量槽(Variable Solt)为其最小单位来表示大小的,一个solt可以存放一个32位以内的数据类型,对于64位的long和double用两个变量槽。局部变量可以存储的类型:1、boolean(1位)2、byte(8位)3、char(16位)4、shrot(16位)5、int(32位)6、float(32位)7、long(64位)8、double(64位)9、reference(引用类型)10、returnAddressjava虚拟机通过索引定位solt的,0号索引为this
栈帧2
方法返回地址
栈帧5
一些附加信息
程序的入口main()方法在栈底
栈帧6
栈帧1
当前栈帧:栈顶的栈帧为当前栈帧,是线程正在执行的方法对应的栈帧。
0 条评论
下一页