Java JVM 内存模型详解
一、什么是 JVM 内存模型?
JVM(Java Virtual Machine)内存模型是 Java 程序运行时内存的逻辑划分,它定义了 Java 程序在运行过程中如何使用内存。理解 JVM 内存模型对于 Java 性能调优、内存泄漏排查、垃圾回收优化等都至关重要。
二、JVM 内存区域划分
1. 程序计数器(Program Counter Register)
作用: 记录当前线程执行的字节码指令地址,是线程私有的内存区域。
特点:
- 每个线程都有独立的程序计数器
- 唯一不会发生 OutOfMemoryError 的内存区域
- 如果执行的是 Java 方法,计数器记录正在执行的虚拟机字节码指令地址
- 如果执行的是 Native 方法,计数器值为空(Undefined)
2. Java 虚拟机栈(Java Virtual Machine Stack)
作用: 存储局部变量、操作数栈、动态链接、方法出口等信息,每个方法执行时都会创建一个栈帧。
特点:
- 线程私有,生命周期与线程相同
- 每个方法调用都会创建一个栈帧(Stack Frame)
- 栈帧包含:局部变量表、操作数栈、动态链接、方法返回地址
可能异常:
StackOverflowError:栈深度超过虚拟机允许的深度OutOfMemoryError:栈扩展时无法申请到足够内存
栈帧结构:
+------------------+
| 方法返回地址 |
+------------------+
| 动态链接 |
+------------------+
| 操作数栈 |
+------------------+
| 局部变量表 |
+------------------+

最低0.47元/天 解锁文章
2563

被折叠的 条评论
为什么被折叠?



