JVM内存结构------栈

mac2026-06-20  2

参考链接: JVM栈和帧 JVM

JAVA/JVM中栈的官方定义:

每个JVM线程拥有一个私有的 Java虚拟机栈,创建线程的同时栈也被创建。 一个JVM栈由许多帧组成,称之为"栈帧"。 JVM中的栈和C等常见语言中的栈比较类似,都用于保存局部变量和部分计算结果,同时也参与方法调用和返回。

调用方法时,会在栈中压入一个栈帧,用来存储这个方法的参数和局部变量。 方法返回时,栈帧就会弹出,这个方法的局部变量和参数就会清除。

简单的代码:

public static void main(String[] args) { int a = 1; int b = 2; int c = add(a, b); System.out.println(c); } public static int add(int a, int b) { int c = a + b; return c; }

在这个代码块中main方法首先压栈,然后main方法的调用会在栈帧区中压入一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等信息。 执行到方法add时,方法add压栈,add方法的调用会在栈帧区中压入栈帧,即当前栈帧为add方法的栈帧。 add方法return之后,栈帧和方法弹栈将return的值赋值给main方法中的变量c。 完毕之后应该有println方法压栈再弹栈。 最后main方法弹栈。

最新回复(0)