(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异常