Java8内存结构图
内存组成
- 程序计数器
- 虚拟机栈
- 本地方法栈
- 堆
- 方法区
程序计数器
Java代码会编译成二进制字节码(编译后是一条条JVM指令,每一条指令都会有对应的地址),然后通过解释器转换成机器码让CPU解读运行。
作用
作为JVM指令地址的寄存器,保存下一条JVM指令的地址。
特点
- 线程私有,线程之间的程序计数器互不干扰。
- 不存在内存溢出的现象。
虚拟机栈
定义
- 每个虚拟机栈代表一个线程运行时所分配的内存空间(一个虚拟机栈可以存在多个栈帧)。
- 每个栈帧代表一个方法运行时所分配的内存空间。
- 每个线程只能有一个活动栈帧,对应正在执行的方法。
常见问题
- 垃圾回收是否涉及栈内存? 不涉及ÿ