(1),
jvm虚拟机栈 : 方法执行时的一块java内存区域,方法对应的是栈
每个方法在执行的同时会创建一个栈帧Stack Framel用于存储局部变量表
,操作数栈【如变量a+变量b得到一个结果】,
动态链接【对象引用地址】
方法出口[return 值]等
每一个方法从调用到完成的过程。就对应着一个帧栈在虚拟机栈中入栈到出栈的过程(2),特点
1 局部变量表存放了编译期可知的各种数据类型[boolean、byte、char、short、int、float、long、double)以及对象引用(reference 类型)]
2 如果线程请求的帧深度大于虚拟机所允许的深度,将抛出StackOverflowError异常(3),范例
例如 一个方法自己调自己
public class TestCls {
public static void main(String[] args) throws Exception {
TestCls testCls = new TestCls();
testCls.testStack();
}
private void testStack() {
String s1 = "";
testStack();
}
}
将抛出StackOverflowError异常
JVM虚拟机栈中,每个方法执行时创建栈帧,存储局部变量、操作数栈和动态链接。当线程请求的帧深度超过限制时,会抛出StackOverflowError异常。例如,递归方法调用可能导致此错误,如一个方法反复调用自身。
1050

被折叠的 条评论
为什么被折叠?



