程序计数器
当前线程所执行的行号治时期,通过改变计数器的值来确定下一条指令,比如循环 分支,跳转,异常处理,线程恢复等都是依赖计数器来完成
java虚拟机栈
它是和线程关联在一起的,每当创建一个线程,JVM就会为这个线程创建一个对应的java栈,一个java栈会包含有多个栈帧(Frames)这些栈帧是与java方法关联的,每运行一个java方法,就创建一个栈帧
堆
通过new生成的对象都放在堆中
静态变量在jdk1.8以后,存放在堆空间中
方法区
用于存储类结构信息,常量池,静态变量,方法数据,方法体,构造函数,包括类中的专用方法,实例初始化,接口数据都存储在这个区域
java本地方法栈
是为JVM运行Native方法准备的空间,java通过java本地接口JNI(java Native interface)来调用其他语言编写的程序