1.OpenJDK17-JVM 源码阅读 - ZGC - 并发标记 | 京东物流技术团队
2.JAVA阅读源码,阅阅读k源大量英文注释阅读不方便,读源求集成idea里面的码何码翻译java注释由英文翻译为中文的工具。
3.java源码怎么打开
4.太强了!阅阅读k源阿里内部传疯了的读源JDK源码学习笔记,看完才发现差距不止一点点
OpenJDK17-JVM 源码阅读 - ZGC - 并发标记 | 京东物流技术团队
ZGC简介:
ZGC是码何码易语言题源码Java垃圾回收器的前沿技术,支持低延迟、阅阅读k源大容量堆、读源染色指针、码何码读屏障等特性,阅阅读k源自JDK起作为试验特性,读源JDK起支持Windows,码何码JDK正式投入生产使用。阅阅读k源在JDK中已实现分代收集,读源预计不久将发布,码何码性能将更优秀。
ZGC特征:
1. 低延迟
2. 大容量堆
3. 染色指针
4. 读屏障
并发标记过程:
ZGC并发标记主要分为三个阶段:初始标记、拼多多鲨鱼源码并发标记/重映射、重分配。本篇主要分析并发标记/重映射部分源代码。
入口与并发标记:
整个ZGC源码入口是ZDriver::gc函数,其中concurrent()是一个宏定义。并发标记函数是concurrent_mark。
并发标记流程:
从ZHeap::heap()进入mark函数,使用任务框架执行任务逻辑在ZMarkTask里,具体执行函数是work。工作逻辑循环从标记条带中取出数据,直到取完或时间到。此循环即为ZGC三色标记主循环。之后进入drain函数,从栈中取出指针进行标记,直到栈排空。标记过程包括从栈取数据,变异方问源码标记和递归标记。
标记与迭代:
标记过程涉及对象迭代遍历。标记流程中,ZGC通过map存储对象地址的finalizable和inc_live信息。map大小约为堆中对象对齐大小的二分之一。接着通过oop_iterate函数对对象中的指针进行迭代,使用ZMarkBarrierOopClosure作为读屏障,实现了指针自愈和防止漏标。
读屏障细节:
ZMarkBarrierOopClosure函数在标记非静态成员变量的指针时触发读屏障。慢路径处理和指针自愈是核心逻辑,慢路径标记指针,快速路径通过cas操作修复坏指针,并重新标记。
重映射过程:
读屏障触发标记后,对象被推入栈中,下次标记循环时取出。LOL处理检测源码ZGC并发标记流程至此结束。
问题回顾:
本文解答了ZGC如何标记指针、三色标记过程、如何防止漏标、指针自愈和并发重映射过程的问题。
扩展思考:
ZGC在指针上标记,当回收某个region时,如何得知对象是否存活?答案需要结合标记阶段和重分配阶段的代码。
结束语:
本文深入分析了ZGC并发标记的源码细节,对您有启发或帮助的话,请多多点赞支持。作者:京东物流 刘家存,来源:京东云开发者社区 自猿其说 Tech。转载请注明来源。
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时,会出现代码运行和行号不匹配的情况
java源码怎么打开
在日常的Java编程中,了解并能查看源代码对提升技能大有裨益。本文将详细阐述如何打开Java源代码,以及如何在使用IDE(如Eclipse或MyEclipse)时方便地查看这些源代码。
首先,确保你已经安装了JDK(Java Development Kit)。源代码通常会位于JDK的安装目录下。通过安装JDK,源代码文件便已就位,但默认情况下,API文档中可能并不包含源代码链接。
如果你使用的是Eclipse或MyEclipse等IDE,查看源代码变得极为简单。只需在你编写的代码中,将鼠标光标悬停在Java类上,然后按Ctrl键。此时,IDE会自动跳转至该Java类的源代码文件。
有时,你可能会遇到“Class Not Edit Source not found”的提示。这通常意味着系统尚未配置好源代码路径。此时,点击提示中的“attach source”按钮,进行源代码包路径的配置。源代码包通常位于JDK的安装路径下,例如在“C:\Program Files\Java\jdk1.6.0_\src.zip”等位置。
完成上述步骤后,你便能成功配置系统,顺利查看Java源代码。这一能力不仅有助于理解和学习Java语言的底层逻辑,还能在遇到问题时提供宝贵的参考。掌握这一技能,对于Java开发者来说,无疑是一大利器。
太强了!阿里内部传疯了的JDK源码学习笔记,看完才发现差距不止一点点
在闲暇之余,阅读JDK源码能加深对自己开发环境的理解,同时也大有裨益。本文为您介绍阿里巴巴发布的版JDK源码剖析,以展示其内部设计的精妙之处。通过阅读,您将发现与自身知识的差距远超想象。这份详尽的笔记对源码内容进行了精细划分,方便学习。以下是其章节概览:
多线程基础 Atomic类 Lock与Condition 同步工具类 并发容器 线程池与Future ForkJoinPool CompletableFuture请注意,由于笔记内容丰富,篇幅较长,本文仅展示部分章节概览。如有需要,可点击下方链接获取完整版资料。