一组成
线程私有的:
- 程序计数器:代码的流程控制
- 虚拟机栈:Java 虚拟机栈也是线程私有的,它的生命周期和线程相同,描述的是 Java 方法执行的内存模型,每次方法调用的数据都是通过栈传递的
- 本地方法栈:和虚拟机栈所发挥的作用非常相似,区别是: 虚拟机栈为虚拟机执行 Java 方法 (也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务
线程共享的:
- 堆:Java 堆是所有线程共享的一块内存区域
- 方法区(元空间):它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
- 直接内存 (非运行时数据区的一部分):和本地交互 ,Native 函数库