synchronized锁升级原理是如何通过复杂机制实现性能优化的?
- 内容介绍
- 相关推荐
本文共计1740个文字,预计阅读时间需要7分钟。
Java对象内存结构,对象内存结构,64位操作系统中,MarkWord(下图_mark)占64位,KlassWord(下图_klass)占32位,64位系统的Klass Word不是32位,默认为64位,开启指针压缩后为32位(感谢评论老哥的指正)。
Java对象的内存结构
对象内存结构
在64位操作系统下,
MarkWord(下图_mark)占64位
KlassWord(下图_klass)占32位 64位系统的Klass Word不是32位,默认64位,开启指针压缩后为32(感谢评论老哥的指出)
64位系统的Klass Word不是32位,默认64位,开启指针压缩后为32
_lengh(只有数据对象才有,不考虑)
实例数据(下图instance data)看参数的类型,int就占32位(4byte)
补齐(padding)是JVM规定java对象内存必须是8byte的倍数,如果实例数据占2byte,那么(64bit的Markword+32bit的Klassword+实例数据32bit)=128bit=16byte是8byte的倍数,所以padding部分为0。
本文共计1740个文字,预计阅读时间需要7分钟。
Java对象内存结构,对象内存结构,64位操作系统中,MarkWord(下图_mark)占64位,KlassWord(下图_klass)占32位,64位系统的Klass Word不是32位,默认为64位,开启指针压缩后为32位(感谢评论老哥的指正)。
Java对象的内存结构
对象内存结构
在64位操作系统下,
MarkWord(下图_mark)占64位
KlassWord(下图_klass)占32位 64位系统的Klass Word不是32位,默认64位,开启指针压缩后为32(感谢评论老哥的指出)
64位系统的Klass Word不是32位,默认64位,开启指针压缩后为32
_lengh(只有数据对象才有,不考虑)
实例数据(下图instance data)看参数的类型,int就占32位(4byte)
补齐(padding)是JVM规定java对象内存必须是8byte的倍数,如果实例数据占2byte,那么(64bit的Markword+32bit的Klassword+实例数据32bit)=128bit=16byte是8byte的倍数,所以padding部分为0。

