synchronized锁升级原理是如何通过复杂机制实现性能优化的?

2026-04-01 06:320阅读0评论SEO资源
  • 内容介绍
  • 相关推荐

本文共计1740个文字,预计阅读时间需要7分钟。

synchronized锁升级原理是如何通过复杂机制实现性能优化的?

Java对象内存结构,对象内存结构,64位操作系统中,MarkWord(下图_mark)占64位,KlassWord(下图_klass)占32位,64位系统的Klass Word不是32位,默认为64位,开启指针压缩后为32位(感谢评论老哥的指正)。

synchronized锁升级原理是如何通过复杂机制实现性能优化的?


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分钟。

synchronized锁升级原理是如何通过复杂机制实现性能优化的?

Java对象内存结构,对象内存结构,64位操作系统中,MarkWord(下图_mark)占64位,KlassWord(下图_klass)占32位,64位系统的Klass Word不是32位,默认为64位,开启指针压缩后为32位(感谢评论老哥的指正)。

synchronized锁升级原理是如何通过复杂机制实现性能优化的?


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。

阅读全文