在 Java 中,栈内存(Stack Memory)主要用于方法执行过程中的临时数据存储和管理,是 JVM 内存模型中非常重要的一部分。
下面用通俗 + 技术结合的方式说明它的作用:
每次调用一个方法,JVM 都会在栈中创建一个 栈帧(Stack Frame):
一个栈帧里通常包含:
void a() {
b();
}
void b() {
int x = 1;
}
调用过程:
栈:
[b的栈帧]
[a的栈帧]
方法执行完,栈帧出栈,内存自动释放。
public void test() {
int a = 10;
double b = 3.14;
}
a、b 直接存在栈内存中。
Person p = new Person();
p(引用)在 栈Person 对象在 堆栈里存的是“指针 / 地址”
| 对比项 | 栈内存 | 堆内存 |
|---|---|---|
| 存储内容 | 局部变量、方法调用 | 对象实例 |
| 生命周期 | 方法结束即释放 | GC 管理 |
| 线程 | 线程私有 | 线程共享 |
| 速度 | 快 | 慢 |
| 大小 | 较小 | 较大 |
常见于:
void recursion() {
recursion();
}
Java 栈内存用于管理方法调用、局部变量和引用,随方法创建和销毁,速度快、线程安全,但不适合存大量或长期数据。
如果你愿意,我也可以画一张 JVM 内存结构图 或结合 字节码 讲栈帧结构。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。