0
点赞
收藏
分享

微信扫一扫

java虚拟机栈

  • 简介

⽤于作⽤于⽅法执⾏的⼀块Java内存区域

  • 作用

每个⽅法在执⾏的同时都会创建⼀个栈帧(Stack Framel)⽤于存储局部变量表、操作数栈、动态链接、⽅法出⼝等信息。
每⼀个⽅法从调⽤直⾄执⾏完成的过程,就对应着⼀个栈帧在虚拟机栈中⼊栈到出栈的过程

  • 代码案例

import java.util.concurrent.atomic.AtomicInteger;
public class A {

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");
}

}

  • 执行结果
  • java虚拟机栈_JVM

  • 先执行的方法先入栈
  • java虚拟机栈_JVM_02

  • 先入栈的后出栈
  • java虚拟机栈_入栈_03

  • 特点

局部变量表存放了编译期可知的各种基本数据类型(boolean、byte、char、short、int、float、long、double)以及对象引⽤(reference 类型)
如果线程请求的栈深度⼤于虚拟机所允许的深度,将抛出 StackOverflowError 异常

  • 模拟异常
  • java虚拟机栈_局部变量_04

  • 不断入栈,导致内存溢出
  • java虚拟机栈_入栈_05



举报

相关推荐

0 条评论