今天开始看了些Java虚拟机的资料,做了一下小结笔记,希望大家多提宝贵意见,谢谢。
一、Java虚拟机运行时数据区域
-
程序计数器
-
Java虚拟机栈
-
本地方法栈
-
Java堆
-
方法区
-
运行时常量池
二、各数据区域情况
1、程序计数器
(1)当前线程所执行字节码的行号指示器。
(2)各线程计数器互不影响,独立存储。
(3)是线程私有内存。
(4)唯一没有规定OutOfMemoryError情况的区域。
2、Java虚拟机栈
- (1)线程私有。
- (2)生命周期与线程相同。
- (补充) 主要包括:局部变量表、操作数栈(存放计算过程的中间结果)和帧数据区(包含访问常量池的指针和异常处理表)
- (3)描述了Java方法执行的内存模型
即Java方法在执行时创建一个栈帧,用于存储局部变量表、操作数栈、动态链接和方法出口等信息。
- (4)栈内存指的就是虚拟机栈,或是虚拟机栈中的局部变量表。
局部变量表:存放了各种基本数据类型、对象引用和returnAddress类型。
局部变量变量表所需内存在编译时完成分配。
- (