一。方法区
JDK1.8之前,代表JVM内一块区域。
JDK1.8之后,也就是元空间metaspace。存放类,静态变量,常量池。总之与类有关的都在方法区。
类一般先加载进方法区。
二。计数器
写好的代码被翻译成字节码,对应各种字节码指令。计数器就是记录当前字节码指令的位置。JVM多线程并发操作时,每个线程都有自己的计数器。
三。虚拟机栈
每个线程都有自己的计数器,则肯定有自己的虚拟机栈。虚拟机栈保存每个方法的局部变量。A a = new A() 左边是栈,右边在堆。线程调用每个方法时,都会创建一个栈帧。栈帧里有这个方法的局部变量表,操作数栈,方法出口,动态链接等。
四。堆
存放实例对象。栈帧里局部变量就是这个实例对象的地址。
五。本地方法栈
native