JVM3-Java内存区域JAVA虚拟机栈
简介:JVM内存模型之java虚拟机栈
- 是什么?
- 用于作用于方法执行的一块Java内存区域
- 为什么?
- 每个方法在执行的同时都会创建一个栈帧(Stack Framel)用于存储局部变量表(局部变量的位置引用地址)、操作数栈、动态链接(引用其他对象的地址)、方法出口(return返回值)等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程
- 特点?
- 局部变量表存放了编译期可知的各种基本数据类型(boolean、byte、char、short、int、float、long、double)以及对象引用(reference 类型)
- 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出 StackOverflowError 异常
public class A { public native static void c(); public static void a(){ System.out.println("enter method a"); } public static void b(){ a(); System.out.println("enter method b"); } public static void main(String[] args) { b(); System.out.println("enter method main"); } }

如以上方法的执行:main方法开始 main里面调用B B方法又调用A 他们入栈的顺序就是 main-B-A A执行完返回后B才执行完 B执行完后main才接着执行完;
所以出栈的顺序就是A-B-main 它们执行所在的方框区域那块内存 就是栈。

浙公网安备 33010602011771号