JAVA运行时数据区分为5个区域:
1)方法区:存放类的类型信息。类型信息包括静态变量和方法信息,方法信息中包含类的所有方法的字节码。
2)堆:存储的全部是对象,每个对象都包含一个与之对应的Class类的对象。
3)(虚拟机)栈:保存线程的运行状态。包括局部变量表,操作数栈和栈帧信息。
局部变量表存放方法参数和局部变量。
操作数栈是线程的工作区,用来存放运行过程中生成的临时数据。
栈帧信息为线程执行指令提供相关的信息,包括如何定位到位于堆区和方法区的特定数据,以及如何正常退出方法或者异常中断方法。
4)本地方法栈
5)程序计数器:也叫PC寄存器,指向方法区中下一条要执行的字节码指令。
进程中的每个线程都有独立的程序计数器和方法调用栈。