当前位置: 首页 > news >正文

集团公司网站方案搜狗网页版入口

集团公司网站方案,搜狗网页版入口,百度不收录网站首页,归客手游代理平台一、Java对象的内存结构 每个Java对象在内存中由三部分组成(以64位JVM为例): |---------------------------------| | 对象头 (12-16字节) | → 包含Mark Word和类型指针 |---------------------------------| | 实例数…

一、Java对象的内存结构

每个Java对象在内存中由三部分组成(以64位JVM为例):

|---------------------------------|
|       对象头 (12-16字节)        |  → 包含Mark Word和类型指针
|---------------------------------|
|       实例数据 (不定长)          |  → 存储对象的字段值
|---------------------------------|
|       对齐填充 (0-7字节)         |  → 确保对象总大小为8的倍数
|---------------------------------|

二、Mark Word的核心作用

Mark Word是​​对象头的核心部分​​(固定8字节),用于存储对象的运行时状态,包括:

  • 🔐 ​​锁状态​​(无锁、偏向锁、轻量级锁、重量级锁)
  • 🆔 ​​哈希码​​(对象的唯一标识)
  • 🧓 ​​GC分代年龄​​(对象被垃圾回收的次数)
  • 🧵 ​​线程ID​​(持有偏向锁的线程)
  • ⏰ ​​时间戳​​(偏向锁的时效性验证)

📌 ​​关键设计​​:Mark Word像​​变色龙​​一样复用存储空间,根据对象状态动态调整内容。


三、Mark Word的结构变化(锁升级视角)

下图展示64位JVM下Mark Word在不同锁状态时的结构变化:

| 锁状态      | Mark Word结构 (64位)                          | 标志位 |
|-------------|-----------------------------------------------|--------|
| **无锁**    | 哈希码(31位) \| 分代年龄(4位) \| 0 \| **01**  | `01`   |
| **偏向锁**  | 线程ID(54位) \| Epoch(2位) \| 1 \| **01**     | `01`   |
| **轻量级锁**| 指向栈中锁记录的指针(62位) \| **00**          | `00`   |
| **重量级锁**| 指向重量级锁(Monitor)的指针(62位) \| **10**   | `10`   |
| **GC标记**  | (空) \| **11**                                | `11`   |

🔍 ​​锁升级过程​​(以线程竞争为例):
无锁 → 偏向锁(单线程反复访问)→ 轻量级锁(少量竞争,CAS自旋)→ 重量级锁(激烈竞争,线程阻塞)。


四、核心字段详解

  1. ​分代年龄 (4位)​

    • 记录对象被GC的次数(最大值15,因4位二进制最大值为1111=15
    • 达到阈值后对象从年轻代晋升到老年代。
  2. ​哈希码 (31位)​

    • 调用hashCode()后生成,延迟存储到Mark Word
    • 加锁后因空间不足,会迁移到Monitor中。
  3. ​线程ID (54位)​

    • 偏向锁状态下记录持有锁的线程ID
    • 同一线程再次加锁时直接通行(无同步开销)。

五、实战观察工具 - JOL

使用​​JOL库​​(Java Object Layout)直接打印对象内存布局:

// 添加Maven依赖
<dependency><groupId>org.openjdk.jol</groupId><artifactId>jol-core</artifactId><version>0.17</version>
</dependency>// 打印Object对象布局
public static void main(String[] args) {Object obj = new Object();System.out.println(ClassLayout.parseInstance(obj).toPrintable());
}

输出示例(无锁状态):

java.lang.Object object internals:
OFFSET  SIZE   TYPE DESCRIPTION
0     4        (object header)  01 00 00 00  # Mark Word (01表示无锁)
4     4        (object header)  00 00 00 00  # 类型指针 (压缩后4字节)
8     4        (alignment padding)          # 对齐填充
Instance size: 16 bytes

🔑 ​​锁状态验证​​:
synchronized代码块内打印对象布局,可见标志位从01变为00(轻量级锁)。


六、为什么这样设计?

  1. ​空间极致利用​

    • 通过动态复用8字节空间,避免为每种状态分配独立空间。
  2. ​性能优化​

    • 偏向锁减少无竞争时的同步开销
    • 轻量级锁用CAS避免线程阻塞。
  3. ​扩展性​

    • 标志位决定结构,未来可扩展新状态(如JDK15的ZGC标记位11)。

七、总结:Mark Word的核心角色

功能实现机制
​身份证明​存储哈希码和GC年龄
​锁管理​通过标志位切换锁状态
​线程协同​记录持有锁的线程ID
​内存优化​动态复用存储空间

💎 ​​一句话理解​​:
Mark Word是Java对象的​​智能身份证​​,既存储身份信息(哈希码/年龄),又动态反映当前状态(锁类型),以最小空间支撑JVM的高效运行。

http://www.zhongyajixie.com/news/19873.html

相关文章:

  • 互联网保险经纪公司手机一键优化
  • WordPress全站广告网络域名怎么查
  • 做动态网站 和数据库交互seo关键词排名优化评价
  • 做国际网站每年要多少钱推广页面
  • windows10php网站建设国际军事新闻最新消息
  • win2003怎么做网站天津建站网
  • 做网站时图片的分辨率是多少关键词长尾词优化
  • 哪个网站可以做司考题baud百度一下
  • 国家新闻最新消息今天南宁seo外包要求
  • 在线制作简历的平台有哪些百度关键字优化精灵
  • wordpress用户站点企业培训计划方案
  • 深圳做电商网站青岛做网站推广
  • 河南做酒店网络系统网站网络营销和推广做什么
  • 重庆网站建设行业新闻百度企业查询
  • 网站建设pdf下载温州网站优化推广方案
  • 网站敏感目录漏洞修复百度电话客服24小时
  • 网站建设经费预算策划书小程序开发公司
  • 做响应式网站公司seo网络排名优化技巧
  • 济南怎么做网站2022年最新最有效的营销模式
  • 免费创建手机网站电脑突然多了windows优化大师
  • bing收录 wordpressseo推广思路
  • 临海做 网站域名收录批量查询
  • 慈溪seo排名东莞seo外包平台
  • 成都 网站建设培训好的搜索引擎推荐
  • 搭建电商网站源码国际新闻今天最新消息
  • 汕头网站制作推荐百度下载免费
  • 怎么做网站链接的快捷方式营销推广投放平台
  • 网站设计风格说明店铺推广渠道有哪些方式
  • 网站多个页面要加引导孝感seo
  • 建设家具网站的目的及功能定位网址怎么注册