JVM内存区域
JVM由 方法区(元空间)、堆、虚拟机栈、本地方法栈、程序计数器 组成
- 按线程共享/私有划分
- 线程共享:堆、方法区
- 线程私有:虚拟机栈、本地方法栈、程序计数器
各区域的作用
- 堆:用于存放对象实例和数组,是垃圾回收的主要区域。
- 方法区:用于存放已加载类的信息(字段和方法的信息)、以及运行时常量池。
- 虚拟机栈:Java 方法运行所需的内存空间。每次方法调用对应一个栈帧,栈顶的活动栈帧对应当前执行栈帧。
- 本地方法栈:本地方法运行所需的内存空间。(本地方法:通过 JNI 等机制调用的、由 C++ 等语言实现的方法)
- 程序计数器:用于记录当前线程正在执行的字节码的地址。