一、运行时数据区总的分为:方法区、堆、虚拟机栈、本地方法栈、程序计数器。
二、程序计数器:
1、可以看做是当前线程所 执行的字节码的行号指示器。
2、字节码解释器通过改变这个计数器选取下一条需要执行的字节码指令。
3、程序计数器是线程私有的,每条线程都需要一个程序计数器来来执行线程中的指令。
三、java虚拟机栈
1、虚拟机栈描述的是java方法执行的内存模型。
2、每个方法被执行时都会创建一个栈帧,用于存储局部变量、操作栈、动态链接、方法出口等信息。
3、一个方法被调用直至调用完成,是一个栈帧在虚拟机栈中入栈到出栈的过程。
4、java虚拟机栈是线程私有的。
四、本地方法栈
1、本地方法栈是虚拟机为本地方法服务的。
五、Java堆
1、java堆的作用,存放对象。
2、虚拟机启动时创建,所有的线程共享。
六、方法区
1、存储已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
2、线程共享,是java堆中的一部分区域。
七、运行时常量池
1、运行时常量池是方法区的一部分,用于存放编译器生成的各种字面量和符号引用。