1....怎么查看导入的物流b物一个java项目的后台各功能源代码在哪?
2.OpenJDK17-JVM 源码阅读 - ZGC - 并发标记 | 京东物流技术团队
...怎么查看导入的一个java项目的后台各功能源代码在哪?
您好,看到您的源码目录结构,项目应该是流管理系基于 MVC 的分层结构进行开发代码的。一般程序的统源请求入口是您的 controller 包下面。
如果目前还不确定是物流b物哪个请求,先在浏览器打开开发者控制台,源码电子离校系统源码找到具体的流管理系请求地址。这里以京东为例。统源域名后面的物流b物一般就是请求的路径,比如下图这个 /getinfo。源码
确认具体的流管理系请求路径后,在 idea 左侧选中项目根目录右键 Find in the path,统源输入请求路径 getinfo,物流b物应该能定位到具体的源码 controller 接口。
如果还是流管理系搜索不到,可以在 idea 下载一个 Restful Tool kit 插件,下载好后重启 idea,平台整理公式源码使用快捷键 cmd + / 进行快捷搜索 RESTful 接口。
希望我的回答可以帮助到你。
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。转载请注明来源。