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

网站三站合一网页加载流程

网站三站合一,网页加载流程,网站标题的关键字怎么写,网站建设公司的会计分录1. 对象头与 Mark Word 每个 Java 对象在内存中分为三部分:对象头、实例数据 和 对齐填充。 对象头 是核心部分,包含以下信息: Mark Word(标记字段):存储对象的哈希码、分代年龄、锁状态等。Klass Pointe…
1. 对象头与 Mark Word

每个 Java 对象在内存中分为三部分:对象头实例数据对齐填充
对象头 是核心部分,包含以下信息:

  • Mark Word(标记字段):存储对象的哈希码、分代年龄、锁状态等。
  • Klass Pointer(类型指针):指向类的元数据(方法区中的 Class 对象)。

Mark Word 的结构(以 64 位 JVM 为例):

锁状态存储内容(64位)
无锁哈希码(25位) + 分代年龄(4位) + 偏向模式(1位,0) + 锁标志位(2位,01)
偏向锁线程ID(54位) + 时间戳(2位) + 分代年龄(4位) + 偏向模式(1位,1) + 锁标志位(01)
轻量级锁指向栈中锁记录的指针(62位) + 锁标志位(00)
重量级锁指向 Monitor 的指针(62位) + 锁标志位(10)
GC 标记空(无意义) + 锁标志位(11)

锁标志位(2位) 决定了当前锁的状态:01(无锁/偏向锁)、00(轻量级锁)、10(重量级锁)、11(GC标记)。


2. Monitor 机制

每个对象关联一个 Monitor(监视器锁),其本质是 JVM 对操作系统 Mutex Lock 的封装,用于管理线程的竞争与等待。
Monitor 的结构如下:

  • Owner:持有锁的线程。
  • EntryList:等待锁的线程队列(未获取到锁的线程在此阻塞)。
  • WaitSet:调用 wait() 后进入等待状态的线程队列。

线程获取锁的流程

  1. 线程尝试通过 CAS 操作 将 Mark Word 中的锁标志位设置为轻量级锁或偏向锁。
  2. 若竞争失败,线程进入 EntryList 等待,并升级为重量级锁(依赖操作系统 Mutex Lock)。
  3. 持有锁的线程释放锁后,唤醒 EntryList 中的线程重新竞争。

3. 锁升级过程

为提高性能,JVM 在 JDK 1.6 后引入 锁升级 机制,根据竞争情况动态调整锁状态:

  1. 无锁

    • 初始状态,未发生线程竞争。
  2. 偏向锁

    • 适用场景:单线程重复访问同一同步代码。
    • 实现:将线程ID写入 Mark Word,后续访问无需 CAS 操作。
    • 触发升级:当其他线程尝试获取锁时,撤销偏向锁,升级为轻量级锁。
  3. 轻量级锁

    • 适用场景:低并发、线程交替执行同步代码。
    • 实现:通过 CAS 自旋 尝试获取锁,避免线程阻塞。
    • 触发升级:自旋超过阈值(默认 10 次)或竞争加剧时,升级为重量级锁。
  4. 重量级锁

    • 适用场景:高并发、竞争激烈。
    • 实现:依赖操作系统 Mutex Lock,线程阻塞并进入 EntryList 等待唤醒。
    • 开销:涉及用户态到内核态的切换,性能较低。

4. 字节码层面的实现

synchronized 在字节码中通过两条指令实现同步:

  • 同步代码块
    编译后插入 monitorentermonitorexit 指令,分别对应锁的获取和释放。
    public void method() {synchronized (this) {  // monitorenterSystem.out.println("同步代码块");}                     // monitorexit
    }
    
  • 同步方法
    方法标记 ACC_SYNCHRONIZED 标志,JVM 在方法调用时隐式获取锁。
    public synchronized void increase() { count++; 
    }
    

5. 其他核心特性
  1. 可重入性
    同一线程可多次获取同一把锁(通过计数器实现,避免死锁)。

  2. 排他性
    同一时刻仅一个线程能持有锁,其他线程必须等待。

  3. 锁释放
    线程执行完同步代码块或抛出异常时,JVM 自动释放锁。


总结

synchronized 的底层实现结合了 对象头标记Monitor 竞争管理锁升级优化,在保证线程安全的同时兼顾性能。其核心优势在于:

  • JVM 自动管理锁:无需手动释放,避免死锁。
  • 锁升级机制:根据竞争动态调整,减少性能开销。
  • 可重入性:支持同一线程重复获取锁。

适用场景:单例模式、简单资源同步等低竞争或需快速实现同步的场景。对于高并发复杂场景,可结合 Lock 的高级功能(如超时、公平锁)优化性能。

http://www.dtcms.com/wzjs/587130.html

相关文章:

  • 网站 维护费用wordpress调查插件
  • 跳转到手机网站哪个网站做恒指好
  • 能用VUE做网站iis8出现在网站首页
  • 公司网站的seo怎么做郑州网约车从业资格证报名
  • 广州优秀网站建设国外客户的网站电话
  • 学网站建设的软件济阳县做网站公司
  • 不关网站备案母婴会所 网站源码
  • 上海城乡建设部网站首页教学网站模板下载
  • 网站酷站有没有接单做加工的网站
  • 什么是空壳网站网站开发案例
  • 网站副标题wordpress的缓存错误页怎么删
  • 网站开发完后期维护重要吗西安产品设计公司
  • 学科主题资源网站的建设辽宁城乡建设集团 网站
  • 个人网站建设模板简洁图片网站建设用户登录源码
  • 有一个做ppt的网站深圳市绿色建筑信息平台
  • 贵阳经济技术开发区网站wordpress如何添加菜单
  • 门户网站建设工作领导小组企业网站怎么做产品图片轮播
  • 上海网站建站多少钱用python做网页
  • 建个网站需要投资多少商业网站自主设计
  • 水墨风格网站源码wordpress后台样式
  • 怎么弄 一个空间放两个网站 用不同的域名网站设计开发项目书
  • 做下载网站用阿里云的什么产品上街区做网站
  • 广东省网站免备案表08影院源码WordPress
  • 自适应网站建设极速建站网站建设投标标书
  • 建设直播网站需要多少钱网络营销的常用方法
  • 植物设计网站推荐水果网站模版
  • 网站设计方案要怎么写比价网站怎么做
  • 求手机视频网站石家庄建行网站
  • Python做网站 性能wordpress加漂浮广告
  • 小型网站有哪些竞价开户