JVM_03-1对象的创建
2022-09-06 10:31:58 0 举报
AI智能生成
JVM_03-1对象的创建
作者其他创作
大纲/内容
类加载检查
Java堆中内存是绝对规整的
所有用过的内存都放在一边,空闲的内存放在另一边
中间放着一个指针作为分界点的指示器
“指针碰撞”(Bump the Pointer)
Java堆中的内存并不是规整
已使用的内存和空 闲的内存相互交错
虚拟机就必须维护一个列表,记录上哪些内存块是可用的
“空闲列表”
分配方法
CAS配上失败重试的方式
CAS(compare and swap)
每个线程在Java堆中预先分配一小块内存
JVM会默认开启
-XX:+/-UseTLAB参数来设定虚拟机是否使用TLAB
默认大小伊甸园的1%
-XX:TLABSize 指定TLAB大小
TLAB
解决并发问题的方法
分配内存
初始化
32位占4字节
64位占8字节
MarkWord
开启指针压缩占4字节
关闭指针压缩占8字节
KlassPointer类型指针
4字节,只有数据对象才有
数组长度
对象头(Header)
实例数据(Instance Data)
loss due to the next object alignment
保证对象是8个字节的整数倍(计算机最优的寻址算法)
对齐填充(Padding)
对象在内存中存储的布局
jvm配置参数
jdk1.6 update14开始,在64bit操作系统中,JVM支持指针压缩
对象的全局静态变量(即类属性)
对象头信息:64位平台下,原生对象头大小为16字节,压缩后为12字节
对象的引用类型:64位平台下,引用类型本身大小为8字节,压缩后为4字节
对象数组类型:64位平台下,数组类型本身大小为24字节,压缩后16字节
哪些信息会被压缩
java对象的指针压缩
设置对象头
执行<init>方法
对象的创建
0 条评论
下一页
为你推荐
查看更多