【技术实现步骤摘要】
【国外来华专利技术】跟踪引用的垃圾收集状态
[0001]本公开涉及垃圾收集。具体地,本公开涉及跟踪引用(reference)的垃圾收集状态。
技术介绍
[0002]编译器将根据旨在方便程序员的规范所编写的源代码转换成机器代码(也称为“本机(native)代码”或“目标代码”)。机器代码可直接由物理机器环境执行。附加地或替代地,编译器将源代码转换成中间表示(也称为“虚拟机代码/指令”),诸如字节码,其可由能够在各种物理机器环境之上运行的虚拟机执行。虚拟机指令可由虚拟机以比源代码更直接和更高效的方式执行。将源代码转换成虚拟机指令包括根据规范将源代码功能映射到虚拟机功能,这利用了虚拟机的底层资源(诸如数据结构)。通常,程序员经由源代码以简单术语呈现的功能被转换成更复杂的步骤,这些步骤更直接地映射到虚拟机所在的底层硬件所支持的指令集。
[0003]虚拟机通过执行源代码的中间表示(诸如字节码)来执行应用和/或程序。虚拟机的解释器将中间表示转换成机器代码。在执行应用时,会为程序所创建的对象分配一定的存储器(也称为“堆存储器(heap memory)”)。垃圾收集系统可以被用于自动地回收(reclaim)应用不再使用的对象所占用的存储器位置。垃圾收集系统使程序员不必明确指定要释放的对象。然而,应用在等待垃圾收集操作完成时经常需要暂停。减少这些暂停时间的一种方法是使用至少在垃圾收集周期的一些阶段支持并发垃圾收集操作的垃圾收集器。应用只需要在非并发(non
‑
concurrent)垃圾收集操作期间暂停,但可以在并发垃圾收集操作期 ...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种或多种非暂态机器可读介质,所述非暂态机器可读介质存储指令,所述指令在由一个或多个处理器执行时,使得:由应用线程接收用于将对第一对象的第一引用从堆存储器加载到所述应用线程的调用堆栈上的请求;从所述堆存储器中检索第一引用,其中第一引用包括(a)第一对象在至少第一时间段期间在所述堆存储器中被存储的第一存储器地址,以及(b)多个垃圾收集状态中与第一引用相关联的第一垃圾收集状态的指示;其中,所述多个垃圾收集状态中的相应垃圾收集状态指示相对于存储在所述堆存储器中的多个引用中的每个引用的垃圾收集操作的进度;至少通过从第一引用中移除第一垃圾收集状态的指示来从第一引用生成第二引用;将第二引用存储到所述调用堆栈上,而没有所述多个垃圾收集状态中的任何垃圾收集状态的任何指示。2.如权利要求1所述的一种或多种介质,还存储指令,所述指令使得:基于与第一引用相关联的第一垃圾收集状态:从多个路径中选择要相对于第一引用执行的路径;其中,所述多个路径中的至少一个路径包括更新第一引用以指示所述多个垃圾收集状态中的第二垃圾收集状态与第一引用相关联。3.如权利要求2所述的一种或多种介质,其中,所述多个路径中的至少一个其它路径不包括对第一引用进行任何改变以指示所述多个垃圾收集状态中的不同垃圾收集状态与第一引用相关联。4.如权利要求1所述的一种或多种介质,还存储指令,所述指令使得:更新第一引用以指示所述多个垃圾收集状态中的第二垃圾收集状态与第一引用相关联;在更新第一引用之后:由所述应用线程接收用于将来自第一对象的第一引用从所述堆存储器加载到所述应用线程的所述调用堆栈上的第二请求;基于与第一引用相关联的第二垃圾收集状态:从多个路径中选择要相对于第一引用执行的路径。5.如权利要求1所述的一种或多种介质,还存储指令,所述指令使得:更新第一引用以指示所述多个垃圾收集状态中的第二垃圾收集状态与第一引用相关联;在更新第一引用之后:由垃圾收集线程识别第一引用;基于与第一引用相关联的第二垃圾收集状态:从多个路径中选择要相对于第一引用执行的路径;其中,所述多个路径中的至少一个路径包括更新第一引用以指示第一垃圾收集状态与第一引用相关联。6.如权利要求1所述的一种或多种介质,还存储指令,所述指令使得:基于与第一引用相关联的第一垃圾收集状态:从多个路径中选择要相对于第一引用执行的路径;其中,所述多个路径中的至少一个路径包括重新映射第一引用以用第一对象在至少第
二时间段期间在所述堆存储器中被存储的第二存储器地址来替换第一存储器地址。7.如权利要求1所述的一种或多种介质,还存储指令,所述指令使得:基于与第一引用相关联的第一垃圾收集状态:从多个路径中选择要相对于第一引用执行的路径;其中,所述多个路径中的至少一个路径包括将第一对象标记为存活。8.如权利要求1所述的一种或多种介质,还存储指令,所述指令使得:基于由垃圾收集线程执行的当前垃圾收集周期的当前阶段,确定所述多个垃圾收集状态中的良好垃圾收集状态;基于所述良好垃圾收集状态和与第一引用相关联的第一垃圾收集状态:从多个路径中选择要相对于第一引用执行的路径;相对于第一引用执行所选择的路径。9.如权利要求1所述的一种或多种介质,其中,第二引用包括以下之一:第一对象在至少第一时间段期间在所述堆存储器中被存储的第一存储器地址;或者第一对象在至少第二时间段期间在所述堆存储器中被存储的第二存储器地址,而不是第一存储器地址。10.如权利要求1所述的一种或多种介质,其中,与第一引用相关联的第一垃圾收集状态的指示被存储在第一引用的不可寻址部分中。11.如权利要求1所述的一种或多种介质,还存储指令,所述指令使得:对第二引用解除引用。12.如权利要求1所述的一种或多种介质,还存储指令,所述指令使得:在对第二引用解除引用之前:验证第二引用符合规范形式;其中,包括第一垃圾收集状态的指示的第一引用不符合所述规范形式。13.如权利要求1所述的一种或多种介质,其中,第一引用内的第一组位包括与第一引用相关联的第一垃圾收集状态的指示,并且第二引用的相同的第一组位包括第二引用的可寻址部分的符号扩展。14.一种或多种非暂态机器可读介质,所述非暂态机器可读介质存储指令,所述指令在由一个或多个处理器执行时,使得:由应用线程识别用于将第一引用写入到堆存储器上的请求;确定多个垃圾收集状态中与由垃圾收集线程执行的垃圾收集周期的当前阶段相关联的第一垃圾收集状态;其中...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。