用于无色根的整合和并发重新映射和识别的制作方法

文档序号:36012143发布日期:2023-11-17 06:42阅读:38来源:国知局
用于无色根的整合和并发重新映射和识别的制作方法

本公开涉及垃圾收集。具体而言,本公开涉及在垃圾收集期间处理无色根。


背景技术:

1、编译器将根据旨在方便程序员的规范编写的源代码转换成机器代码(也称为“本机(native)代码”或“目标代码”)。机器代码可直接由物理机器环境执行。附加地或替代地,编译器将源代码转换成中间表示(也称为“虚拟机代码/指令”),诸如字节码,其可由能够在各种物理机器环境之上运行的虚拟机执行。虚拟机指令可由虚拟机以比源代码更直接和更高效的方式执行。将源代码转换成虚拟机指令包括根据规范将源代码功能映射到虚拟机功能,这利用了虚拟机的底层资源(诸如数据结构)。通常,程序员经由源代码以简单术语呈现的功能被转换成更复杂的步骤,这些步骤更直接地映射到虚拟机所在的底层硬件支持的指令集。

2、虚拟机通过执行源代码的中间表示(诸如字节码)来执行应用和/或程序。虚拟机的解释器将中间表示转换成机器代码。在执行应用时,会为程序创建的对象分配一定的存储器(也称为“堆存储器”)。垃圾收集系统可以用于自动回收应用不再使用的对象占用的存储器位置。垃圾收集系统使程序员不必明确指定要释放哪些对象。但是,应用在等待垃圾收集操作完成时经常需要暂停。减少这些暂停时间的一种方法是使用至少在垃圾收集循环的一些阶段支持并发垃圾收集操作的垃圾收集器。应用只需要在非并发垃圾收集操作期间暂停,但可以在并发垃圾收集操作期间并发运行(包括在必要时继续分配新对象)。

3、在本部分中描述的方法是可以实行的方法,但不一定是先前已经构想或实行的方法。因此,除非另外指出,否则不应当假设在本部分中描述的任何方法仅仅因为其包括在本部分中就被认为是现有技术。


技术实现思路



技术特征:

1.一种或多种存储指令的非暂态计算机可读介质,指令在由一个或多个硬件处理器执行时使得:

2.如权利要求1所述的介质,其中:

3.如权利要求1所述的介质,其中:

4.如权利要求3所述的介质,还存储指令,包括:

5.如权利要求1所述的介质,还存储指令,使得:

6.如权利要求1所述的介质,其中垃圾收集线程对第一操作集的执行与应用线程对与调用堆栈上的第三帧相关联的函数的执行是并发的。

7.如权利要求1所述的介质,其中垃圾收集线程在调用堆栈上的所述多个帧的同一遍历内执行标记和重新映射。

8.如权利要求1所述的介质,还存储指令,包括:

9.如权利要求1所述的介质,其中第一操作集和第二操作集是在同一垃圾收集循环的同一阶段中执行的。

10.一种或多种存储指令的非暂态计算机可读介质,指令在由一个或多个处理器执行时使得:

11.如权利要求10所述的介质,其中第一根引用在任何垃圾收集循环的任何安全点阶段期间都不被重新映射。

12.如权利要求10所述的介质,其中第一根引用在垃圾收集循环的并发阶段期间被重新映射。

13.如权利要求10所述的介质,其中第一根引用在下一个垃圾收集循环的另一个并发阶段期间被重新映射,同时全局状态处于并发标记状态。

14.如权利要求10所述的介质,存储指令,该指令使得:

15.如权利要求10所述的介质,存储指令,该指令还使得:

16.如权利要求10所述的介质,其中第一根引用通过或者应用线程或者垃圾收集线程尝试访问包括第一根引用的帧而被懒惰地重新映射。

17.一种方法,包括如权利要求1-10中的任一项所述的操作。

18.一种系统,包括:

19.一种系统,包括:


技术总结
在并发重新定位阶段期间,GC线程在应用线程执行时重新定位存活对象。如果应用线程尝试访问调用堆栈上的帧,那么该帧中的引用被重新映射。如果没有应用线程尝试访问,那么调用堆栈上的引用保持陈旧。即使帧具有陈旧引用并因此尚未呈现重新映射状态,GC线程也可以继续进行GC循环的后续阶段。在并发标记/重新映射阶段期间,调用堆栈可以包括处于不同帧状态的帧。GC线程基于相应的帧状态选择适当的操作来处理每个帧。当GC线程遇到不处于重新映射状态的帧时,首先重新映射其中的引用,然后将其识别为根。因此,根引用重新映射和识别是在GC循环的单个并发阶段中执行的。

技术研发人员:E·厄斯特伦德,P·利登,S·M·R·卡尔松
受保护的技术使用者:甲骨文国际公司
技术研发日:
技术公布日:2024/1/16
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1