jvm运行时数据区域

参考书籍:《深入理解Java虚拟机JVM高级特性与最佳实现》 周志明
jvm运行时数据区域1,方法区:是各个线程共享的内存区域,用于存储被虚拟 机加载的类型信息,常量,静态变量,即时编译器编译后的代码缓存等数据

2,虚拟机栈:虚拟机栈是线程私有的,生命周期与线程相同。每个方法被执行的时候,java虚拟机会同步创建一个栈帧用于存储局部变量表,操作数栈,动态连接,方法出口等信息。

3,本地方法栈:与虚拟机栈作用相似,区别是虚拟机栈为虚拟机执行java方法服务,本地方法栈为虚拟机使用的本地方法服务

4,堆:被所有线程共享的内存区域,在虚拟机启动时创建,主要存放对象实例。其次,堆是垃圾收集器管理的内存区域,因此也称为GC堆

5,程序计数器:在虚拟机中占用非常小的一块内存空间,可看作当前线程所执行的字节码的行号指示器