程序计数器
它可以看做是当前线程执行的字节码的指示器。
Java虚拟机栈
它描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口信息等。每一个方法从调用到执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。
本地方法栈
Java堆
它是被所有线程共享的一块区域,在虚拟机启动时创建。此内存区域的唯一目的是存放对象实例。
对象的内存布局分为3块区域 对象头、实例数据、对齐填充
方法区
它也是被所有线程共享的一块区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
运行时常量池是方法区的一部分。