本站提倡有节制游戏,合理安排游戏时间,注意劳逸结合。

【文件上传源码asp】【依依源码】【upupoo源码】java 源码 阅读

2024-12-29 06:23:38 来源:探索 分类:探索

1.java Դ?源码阅读? ?Ķ?
2.开源免费的源码阅读神器 Sourcetrail
3.OpenJDK17-JVM 源码阅读 - ZGC - 并发标记 | 京东物流技术团队

java 源码 阅读

java Դ?? ?Ķ?

       学会在idea(eclipse)中阅读、调试源码,源码阅读是源码阅读java程序员必不可少的一项技能。

       在idea中配完环境后,源码阅读默认其实也是源码阅读能够对jdk的源码进行debug调试的。但是源码阅读文件上传源码asp无法在源码中添加自己的注释,无法添加自己的源码阅读理解。如果干瞪眼看的源码阅读话,可能过段时间,源码阅读就忘记了。源码阅读下面就介绍下,源码阅读如何在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文件中,添加自己的upupoo源码注释了。

       一定注意:添加注释时,一定不要新加一行写注释。最好在一行代码的后面,使用//进行注释。否则行号和真正的jre中编译后的代码行号对应不上,如果对源码debug时,会出现代码运行和行号不匹配的情况

开源免费的源码阅读神器 Sourcetrail

       开源免费的源码阅读神器 Sourcetrail,一款视觉化的跨平台源码探索项目,适合阅读C、C++、Python和Java源码。

       直观的源码结构,左侧以图形展示调用上下游、actionfilter 源码类成员等细节,简化阅读理解。

       支持主流编程语言,提供SDK拓展支持其他语言。

       官网提供下载链接,支持Windows、macOS、Linux系统。

       使用Sourcetrail阅读源码的流程包括创建项目、导入源码文件夹、设置索引文件、开始索引操作,完成后即可浏览源码,netframework源码支持符号跳转和模糊搜索。

       与Atom、Clion、Eclipse、Emacs、IntelliJ IDEA等编辑器连接,提供丰富功能。

       查阅官方文档获取更多功能信息,体验利器效果。

OpenJDK-JVM 源码阅读 - ZGC - 并发标记 | 京东物流技术团队

       ZGC简介:

       ZGC是Java垃圾回收器的前沿技术,支持低延迟、大容量堆、染色指针、读屏障等特性,自JDK起作为试验特性,JDK起支持Windows,JDK正式投入生产使用。在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操作修复坏指针,并重新标记。

       重映射过程:

       读屏障触发标记后,对象被推入栈中,下次标记循环时取出。ZGC并发标记流程至此结束。

       问题回顾:

       本文解答了ZGC如何标记指针、三色标记过程、如何防止漏标、指针自愈和并发重映射过程的问题。

       扩展思考:

       ZGC在指针上标记,当回收某个region时,如何得知对象是否存活?答案需要结合标记阶段和重分配阶段的代码。

       结束语:

       本文深入分析了ZGC并发标记的源码细节,对您有启发或帮助的话,请多多点赞支持。作者:京东物流 刘家存,来源:京东云开发者社区 自猿其说 Tech。转载请注明来源。

相关推荐
一周热点