jvm内存模型
2023-01-29 11:31:58 0 举报
jvm 内存模型的详细说明,博阿凯对象创建的流程,对象的内存分布等
作者其他创作
大纲/内容
基本数据类型对象引用returnAdsdress类型
运行方法区
常量池中是否存在类的符号引用
对象的内存分布
操作数栈
内存空间初始化
栈帧
不是必然存在的,也没有特别意义,主要是起到占位符的作用,因为内存管理系统要求对象起始地址必须是8字节的整数倍
局部变量表
是
本地库接口
堆
类型指针
对齐补充
1.并不是所有虚拟机实现都含有类型指针,可以通过其他形式实现2. 如果对象是数组,则还需要在对象头中保存数组大小
new 指令
执行引擎
对象头(header)
类加载流程
对象是哪个类的实例、如何找到类的元数据信息、对象哈希码、GC分代信息等
本地方法栈
虚拟机栈
本地方法库
对象真正存储的有效信息,也是程序在代码中所定义的各种类型的字段内容
Mark Word
内存分配
线程隔离的数据区
init执行
否
方法出口
虚拟机视角的对象创建
动态链接
存储对象自身的运行时数据,哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等
保证对象实例字段在Java代码中不赋值也可以使用
HotSpot虚拟机默认的分配策略为longs/doubles、ints、shorts/chars、bytes/booleans、oops(Ordinary Object Pointers),从分配策略中可以看出,相同宽度的字段总是被分配到一起
程序计数器
对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例
实例数据
对象头信息设置
由所有线程共享的数据区
类是否加载过
方法区
32位是32BIt大小64位是64Bit大小
0 条评论
下一页