敲一下:
-
程序计数器(PC Register):用来保存下一条的指令地址
-
虚拟机栈(JVM Stack): 主要存储方法中的局部变量;局部变量:方法的参数或方法的内部变量。
-
本地方法栈(Native Method Stack):与虚拟栈类似,只不过保存的是Native方法的局部变量。在HotSpot的JVM版本中,本地栈和虚拟机栈是在一起的
-
堆(Heap):使用new创建出来的对象都在堆上
-
方法区(Method Area):用于存储类(class)信息、常量、静态变量、即时编译器编译后的代码等。方法编译出的字节码保存于此,即一些方法信息;
-
运行时常量池(Runtime Constant Pool):是方法区的一部分,存放字面量与符号引用。
注意:
- 栈主要用来保存栈帧(Stack Frame)
- 在每个线程中,程序计数器(PC)、本地方法栈\JVM栈都是私有的,即每个线程独享一份。而堆、方法区、常量池是所有线程共享的。