展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

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

}
  • 执行结果

  • 先执行的方法先入栈

  • 先入栈的后出栈

  • 特点

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

  • 不断入栈,导致内存溢出

posted @ 2022-09-14 14:49  DogLeftover  阅读(36)  评论(0)    收藏  举报