虚拟机栈:方法执行的内存模型
引言:方法调用的幕后英雄 当你调用一个Java方法时,JVM在背后做了什么? public class Demo { public static void main(String[] args) { int result = add(1, 2); System.out.println(result); } public static int add(int a, int b) { return a + b; } } 这段简单的代码背后,涉及到: 方法参数如何传递? 局部变量存储在哪里? 方法调用时发生了什么? 方法返回后内存如何释放? 这些问题的答案,都藏在 虚拟机栈(Java Virtual Machine Stack) 中。 理解虚拟机栈是理解Java方法调用机制的基础,也是排查 StackOverflowError 的关键。 什么是虚拟机栈? 核心定义 虚拟机栈(VM Stack) 是描述Java方法执行的内存模型: 每个方法执行时,JVM会创建一个 栈帧(Stack Frame) 栈帧用于存储 局部变量、操作数、方法返回地址 等信息 方法调用时入栈,方法返回时出栈 第一性原理:为什么需要栈结构? 栈(Stack) 是一种 后进先出(LIFO,Last In First Out) 的数据结构,天然适合处理 方法调用链: public class StackDemo { public static void main(String[] args) { method1(); } public static void method1() { method2(); } public static void method2() { method3(); } public static void method3() { System.out.println("Hello"); } } 方法调用链: ...