type
status
date
slug
summary
tags
category
icon
password
1.方法区(Method Area)
- 作用:存储类的结构信息(如类名、方法、字段)、静态变量、常量池和编译后的字节码。
- 特点:线程共享。
- 演变:JDK 8前部分由永久代(PermGen)实现,JDK 8后移至元空间(Metaspace),使用本地内存。
2.堆(Heap)
- 作用:存储对象实例和数组,是垃圾回收的主要区域。
- 特点:线程共享。
- 分区:
- 新生代:Eden + Survivor(From/To),存放新对象,Minor GC频繁。
- 老年代:存放长生命周期对象,Major GC清理。
- 调优:通过 -Xms(初始堆大小)和 -Xmx(最大堆大小)调整。
3.虚拟机栈(JVM Stack)
- 作用:每个线程执行方法时创建栈帧,保存局部变量、操作数栈、方法返回地址等。
- 特点:线程私有。
- 异常:栈溢出抛 StackOverflowError,内存不足抛 OutOfMemoryError。
4.本地方法栈(Native Method Stack)
- 作用:支持本地方法(Native Method,如C/C++实现)的执行。
- 特点:线程私有,具体实现依赖JVM底层。
5.程序计数器(Program Counter Register)
- 作用:记录当前线程执行的字节码指令地址。
- 特点:线程私有,唯一无内存溢出风险的区域。
