2026/3/22 17:45:46
网站建设
项目流程
免费的毕业设计网站建设,购物app排行榜,淮北在建项目,网络加速器下载锁优化Jvm 在加锁的过程中#xff0c;会采用自旋、自适应、锁消除、锁粗化等优化手段来提升代码执行效率。什么是锁升级#xff0c;降级#xff1f;锁的4中状态#xff1a;无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态#xff08;级别从低到高#xff09;。
所谓的…锁优化Jvm 在加锁的过程中会采用自旋、自适应、锁消除、锁粗化等优化手段来提升代码执行效率。什么是锁升级降级锁的4中状态无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态级别从低到高。所谓的锁升级、降级就是 JVM 优化 synchronized 运行的机制当 JVM 监测到不同的竞争状况是会自动切换到不同的锁实现。这种切换就是锁的升级、降级。锁升级偏向锁因为经过大量的研究发现大多数时候是不存在锁竞争的常常是一个线程多次获得同一个锁因此如果每次都要竞争锁会增大很多没有必要付出的代价为了降低获取锁的代价才引入的偏向锁。在程序的一开始处于无锁状态。紧接着有一个线程申请锁此时通过CAS竞争锁CAS保证了此竞争行为的原子性获取锁成功Mark Word 将标记为偏向锁。当同样的线程再次到来发现是锁的持有者并且是偏向锁直接进入临界区。因此偏向锁意味着不会发生竞争条件因为只有一个线程。轻量级锁随着程序的运行有新的线程要进入临界区通过CAS竞争锁失败。Mark Word立即将偏向锁标记锁为轻量级锁因为已经发生了竞争条件。紧接着会反复同通过CAS为线程获取锁如果占有锁的线程在临界区待的时间很短那么申请锁的线程将很快拿到锁。因此轻量级锁意味着有竞争条件但是大家能很快地被分配到锁。重量级锁当然申请锁的线程并不总是能很快地获取到锁与其反复地CAS重试而浪费CPU时间不如直接将线程阻塞住。那么在轻量级锁的情况下如果有线程超过一定次数的重试还是获取不到锁Mark Word立即将轻量级锁标记为重量级锁此后所有获取不到锁的线程将被阻塞需要Monitor的参与。因此重量级锁意味着在有竞争条件的情况下线程不能很快地被分配到锁。Synchronized的锁只能膨胀不能收缩。偏向锁和轻量锁为乐观锁重量级锁为悲观锁。Synchronized的好处在于它的优化、锁申请释放、锁的分配都是自动的开发者能快速地使用。轻量级锁什么时候升级为重量级锁线程1获取轻量级锁时会先把锁对象的对象头MarkWord复制一份到线程1的栈帧中创建的用于存储锁记录的空间称为DisplacedMarkWord然后使用CAS把对象头中的内容替换为线程1存储的锁记录DisplacedMarkWord的地址如果在线程1复制对象头的同时在线程1CAS之前线程2也准备获取锁复制了对象头到线程2的锁记录空间中但是在线程2CAS的时候发现线程1已经把对象头换了线程2的CAS失败那么线程2就尝试使用自旋锁来等待线程1释放锁。但是如果自旋的时间太长也不行因为自旋是要消耗CPU的因此自旋的次数是有限制的比如10次或者100次如果自旋次数到了线程1还没有释放锁或者线程1还在执行线程2还在自旋等待这时又有一个线程3过来竞争这个锁对象那么这个时候轻量级锁就会膨胀为重量级锁。重量级锁把除了拥有锁的线程都阻塞防止CPU空转。锁膨胀当轻量级锁失败虚拟机就会使用重量级锁。使用重量级锁时对象的Mark Word中的末尾的2位会被设置为10。整个Mark Word表示指向monitor对象的指针。JVM对锁的优化1.自旋锁在没有加入锁优化时Synchronized是一个非常“胖大”的家伙。在多线程竞争锁时当一个线程获取锁时它会阻塞所有正在竞争的线程这样对性能带来了极大的影响。在挂起线程和恢复线程的操作都需要转入内核态中完成这些操作对系统的并发性能带来了很大的压力。同时HotSpot团队注意到在很多情况下共享数据的锁定状态只会持续很短的一段时间为了这段时间去挂起和回复阻塞线程并不值得。在如今多处理器环境下完全可以让另一个没有获取到锁的线程在门外等待一会(自旋)但不放弃CPU的执行时间。等待持有锁的线程是否很快就会释放锁。为了让线程等待我们只需要让线程执行一个忙循环(自旋)这便是自旋锁由来的原因。2.锁粗化如果一系列的连续操作都是对同一个对象反复加锁和解锁甚至加锁操作是出现在循环体中的那即使没有线程竞争频繁地进行互斥同步操作也会导致不必要的性能损耗。在这种情况下虚拟机便会把所有的锁操作优化成对锁的一次请求从而减少对锁的请求同步次数这个操作叫做锁粗化。3.锁消除锁消除是指JIT编译器在运行时将一些在代码上同步了但实际上不可能存在共享数据竞争的锁进行消除。锁消除主要是根据逃逸分析技术来判定的如果判断在一段代码中堆上的所有数据都不会逃逸出去从而被其它线程访问到那就可以把它们当做栈上数据对待认为它们是线程私有的同步加锁自然就无需进行了。AI大模型学习福利作为一名热心肠的互联网老兵我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。一、全套AGI大模型学习路线AI大模型时代的学习之旅从基础到前沿掌握人工智能的核心技能因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获取二、640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获三、AI大模型经典PDF籍随着人工智能技术的飞速发展AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型如GPT-3、BERT、XLNet等以其强大的语言理解和生成能力正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获四、AI大模型商业化落地方案因篇幅有限仅展示部分资料需要点击文章最下方名片即可前往获作为普通人入局大模型时代需要持续学习和实践不断提高自己的技能和认知水平同时也需要有责任感和伦理意识为人工智能的健康发展贡献力量