JVM_01_内存区域
2019-09-24 17:22:35 84 举报
JVM 内存区域,对象创建流程,对象访问定位,类加载流程
作者其他创作
大纲/内容
8大基本类型
线程私有
所属方法的符号引用
对象
操作数栈
本地方法栈
数组
.Java文件
15次没有回收掉
MethodA
本地库接口Native Interface
老数据
To Survivors1 (1/10)
大对象直接进来
栈帧是为方法调用服务的,因此需要存储方法参数、局部变量,方法对另一个方法的调用,方法返回等信息操作数栈是为字节码指令服务的
程序计数器
虚拟机栈VM Stack
方法返回地址
Eden (8/10)
Minor GC回收
编译
调用
Java运行时数据区Runtime Data Area
MinorGC回收
MethodB
老年代(2/3)
本地方法库Native Libraries
堆Heap
类信息
虚拟机栈
.Class文件
From Survivors0 (1/10)
iload 0
线程间共享
程序计数器Programe Counter Register
32位
即时编译器编译后的代码
动态连接
TLAB
方法区Method Area
新生代(2/3)
栈帧-MethodA
reference
本地方法栈Native Method Stack
常量
执行引擎Execution Engine
iload 1
线程
类加载
栈帧-MethodB
元空间/方法区
returnAddress
局部变量表
1.程序计数器:可以看作当前线程所执行的字节码的行号指示器2.虚拟机栈:描述的是Java方法执行的内存模型: - 每个方法在执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 - 每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。3.本地方法栈: - 与虚拟机栈类似,不过却是为虚拟机使用到的Native方法服务 - HotSpot虚拟机将虚拟机栈和本地方法栈合二为一4.方法区: - 存放已被虚拟机加载的类的类信息、常量、静态变量、即时编译器编译后的代码 - 对HotSpot虚拟机来说,也称为永久代(Permanent Generation)。JDK1.7之后,字符串常量池移出到堆中 - JDK1.7之后,改为元空间5.堆: - 存放几乎所有的对象实例和数组,GC的主要区域 - 从内存回收的角度,可划分为新生代和老年代,可进一步细分为Eden空间、From Survivor空间、To Survivor空间 - 从内存分配的角度,可能划分出多个线程私有的分配缓冲区(TLAB)
堆
静态变量
0 条评论
回复 删除
下一页