按照线程私有和共享区域来划分
- 线程私有
- 程序计数器
- 指向当前线程正在执行的字节码行号地址,如果是本地方法,值为undefined
- 虚拟机中唯一不会oom的区域
- 为什么会有程序计数器 - java天生多线程
- 本地方法栈
- 非java方法。native
- 虚拟机栈
- 由栈帧组成 - 每个方法对应一个栈帧
- 局部变量表
- 操作数栈
- 动态链接
- 返回地址
- 栈帧会存在重叠区域-实现数据共享
- 由栈帧组成 - 每个方法对应一个栈帧
- 程序计数器
- 线程共享
- 方法区(虚拟机定义的一个规范)
- jdk1.8之后叫元空间
- jdk1.8之前叫永久代
- 堆
- 真实存放java对象的区域
- 也是GC的主要区域
- 常量池
- 1.7之前在方法区(永久代)
- 1.7之后在堆中
- 关于intern方法的面试题 https://www.cnblogs.com/Kidezyq/p/8040338.html
- 方法区(虚拟机定义的一个规范)