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 异常
-
模拟异常
-
不断入栈,导致内存溢出
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具