1.OpenJDK17-JVM 源码阅读 - ZGC - 并发标记 | 京东物流技术团队
2.惊艳!码阅阿里内部JDK源码剖析知识手册,读顺由浅入深堪称完美
3.JAVA阅读源码,码阅大量英文注释阅读不方便,读顺求集成idea里面的码阅翻译java注释由英文翻译为中文的工具。
OpenJDK17-JVM 源码阅读 - ZGC - 并发标记 | 京东物流技术团队
ZGC简介:
ZGC是读顺源码资本地点Java垃圾回收器的前沿技术,支持低延迟、码阅大容量堆、读顺染色指针、码阅读屏障等特性,读顺自JDK起作为试验特性,码阅JDK起支持Windows,读顺JDK正式投入生产使用。码阅在JDK中已实现分代收集,读顺预计不久将发布,码阅批量 打印 源码 lsp性能将更优秀。
ZGC特征:
1. 低延迟
2. 大容量堆
3. 染色指针
4. 读屏障
并发标记过程:
ZGC并发标记主要分为三个阶段:初始标记、并发标记/重映射、重分配。本篇主要分析并发标记/重映射部分源代码。
入口与并发标记:
整个ZGC源码入口是ZDriver::gc函数,其中concurrent()是一个宏定义。并发标记函数是concurrent_mark。
并发标记流程:
从ZHeap::heap()进入mark函数,使用任务框架执行任务逻辑在ZMarkTask里,具体执行函数是work。工作逻辑循环从标记条带中取出数据,直到取完或时间到。此循环即为ZGC三色标记主循环。识别文字ocr源码之后进入drain函数,从栈中取出指针进行标记,直到栈排空。标记过程包括从栈取数据,标记和递归标记。
标记与迭代:
标记过程涉及对象迭代遍历。标记流程中,ZGC通过map存储对象地址的finalizable和inc_live信息。map大小约为堆中对象对齐大小的二分之一。接着通过oop_iterate函数对对象中的指针进行迭代,使用ZMarkBarrierOopClosure作为读屏障,实现了指针自愈和防止漏标。
读屏障细节:
ZMarkBarrierOopClosure函数在标记非静态成员变量的指针时触发读屏障。慢路径处理和指针自愈是源码gpg agent 下载核心逻辑,慢路径标记指针,快速路径通过cas操作修复坏指针,并重新标记。
重映射过程:
读屏障触发标记后,对象被推入栈中,下次标记循环时取出。ZGC并发标记流程至此结束。
问题回顾:
本文解答了ZGC如何标记指针、三色标记过程、如何防止漏标、指针自愈和并发重映射过程的问题。
扩展思考:
ZGC在指针上标记,当回收某个region时,如何得知对象是波段指标原源码否存活?答案需要结合标记阶段和重分配阶段的代码。
结束语:
本文深入分析了ZGC并发标记的源码细节,对您有启发或帮助的话,请多多点赞支持。作者:京东物流 刘家存,来源:京东云开发者社区 自猿其说 Tech。转载请注明来源。
惊艳!阿里内部JDK源码剖析知识手册,由浅入深堪称完美
在当前互联网寒冬中,提升核心竞争力显得尤为关键。对于Java开发者来说,深入理解JDK源码是提升自身实力的重要途径。近期,一位阿里架构师花费数月精心整理的《JDK源码剖析知识手册》值得关注,它以8个章节从浅入深解析JDK,涵盖了多线程基础、Atomic类、Lock与Condition、同步工具类、并发容器、线程池与Future、ForkJoinPool以及CompletableFuture等核心内容。
多线程章节强调内存优化和效率提升,Atomic类则带你逐步揭开Concurrent包的层级结构。深入理解Lock与Condition,以及并发工具类背后的实现原理,将有助于编写更优雅、严谨的代码。并发容器的讲解,让你全面掌握包内各类工具的使用。线程池与Future的分析,揭示了高效任务管理的机制,ForkJoinPool和CompletableFuture的探讨则展示了并发编程的深度技巧。
这本手册并非泛泛而谈,而是旨在帮助开发者实现质的飞跃。记住,不断学习和提升是成长的关键。现在,只需点击这里即可获取这份宝贵的资源,开始你的JDK源码探索之旅,为自己增添竞争优势。点击这里,踏上成为更好开发者之路。
JAVA阅读源码,大量英文注释阅读不方便,求集成idea里面的翻译java注释由英文翻译为中文的工具。
学会在idea(eclipse)中阅读、调试源码,是java程序员必不可少的一项技能。在idea中配完环境后,默认其实也是能够对jdk的源码进行debug调试的。但是无法在源码中添加自己的注释,无法添加自己的理解。如果干瞪眼看的话,可能过段时间,就忘记了。下面就介绍下,如何在jdk源码中为所欲为,像在我们自己的代码中一样写注释、调代码:
打开idea,选择Project->File->Project Structure->SDKs->Sourcepath,初始状态如下图 :
打开本地jdk安装路径,本处为E:\java\jdk8,将此路径下的src.zip压缩包解压到自定义的指定文件夹(可以在电脑磁盘任意位置),本处解压到同目录的jdk_source文件夹下,如下图:
继续在步骤1中的设置页面中操作,将E:\java\jdk8\src.zip通过右侧的减号将其移除;并通过右侧的加号,将解压文件夹E:\java\jdk8\jdk_source导入进来;点击apply,再点击OK。导入结果见下图:
这时,再重新打开jdk的源码类,我们就可以在源java文件中,添加自己的注释了。
一定注意:添加注释时,一定不要新加一行写注释。最好在一行代码的后面,使用//进行注释。否则行号和真正的jre中编译后的代码行号对应不上,如果对源码debug时,会出现代码运行和行号不匹配的情况
2024-11-29 23:46592人浏览
2024-11-29 23:251918人浏览
2024-11-29 22:441597人浏览
2024-11-29 22:21318人浏览
2024-11-29 22:151480人浏览
2024-11-29 21:43945人浏览
1.QT获取屏幕分辨率的方法2.使用Qt(cpp+qml)开发与移植项目至Android时的问题汇总3.qt5.13的注册方法4.Qt与Web混合开发5.基于QT的安卓手机蓝牙APP开发QT获取屏幕分
中国消费者报沈阳讯记者王文郁)10月22日,辽宁省市场监管局会同沈阳市市场监管局组织召开全省部分电商企业行政指导会,针对电商企业依法合规“亮照亮证亮规则”、发布互联网广告、开展网络直播营销、落实食品安
不少人容易出現耳鳴、眩暈等症狀,受氣溫影響而導致的耳鳴,恐怕與血管阻塞或血液循環不良有關。若是單純只有耳鳴症狀,1年4季的發生率基本上相差不大,不過到了秋冬季節天氣轉涼,正是許多病毒的好發季節,有些人