当前位置: 首页 > 专利查询>微软公司专利>正文

用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集制造技术

技术编号:7898106 阅读:243 留言:0更新日期:2012-10-23 04:19
本发明专利技术涉及用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集。公开了用于保守垃圾收集的各方面。在一个方面,在脚本的执行期间生成各对象的堆,并跟踪未执行部分中的各脚本对象到堆上的各相应存储器位置。然后与执行该脚本并发地标记堆,使得经标记的堆包括可到达对象和不可到达对象。然后与执行脚本并发地基于标记释放分配给不可到达对象的存储器。在另一方面,生成与调用栈相关联的对象图,并跟踪该对象图使得跟踪该栈的未执行部分中的各脚本对象到堆上的各相应存储器位置。与执行栈并发地标记各堆对象,使得经标记的堆包括可到达对象和不可到达对象。然后与执行栈并发地基于经标记的堆来清除分配给各不可到达对象的存储器。

【技术实现步骤摘要】
保守垃圾收集方法和存储器管理设备
本专利技术涉及使用并发标记和并发扫掠的保守垃圾收集算法。
技术介绍
作为与一些常规系统有关的背景,应注意计算设备传统上已存储了信息和相关联的应用。对于这些和相关的结果,还应注意实现高效的存储器管理方案可有助于实现最优计算性能。自动存储器管理方案中的开发与手动存储器管理方案相比已被很好地执行。垃圾收集器算法例如是自动存储器管理方案,其尝试取回被特定程序不再使用的各对象所占用的存储器。跟踪式垃圾收集器是常见类型的垃圾收集器。跟踪式垃圾收集器首先确定哪些对象是可到达的(或者,可能是可到达的),并然后丢弃所有剩余的对象。可到达对象可以被定义成这样的对象:程序环境中存在可直接地或通过来自其他可到达对象的引用而通向该对象的某一变量。更精确地,对象一般可以以两种方式来到达。首先,假设被称为根的对象的特异集合(distinguishedset)是可到达的。一般地,这些对象包括引用自调用栈内的任何地方的所有对象(即,当前正被调用的函数中的所有局部变量和参数)以及任何全局变量。其次,引用自可到达对象的任何对象本身被认为是可到达的。然而,常规垃圾收集器的复杂性在于这种垃圾收集器需要快速并高效地释放分配给不再为可到达的各对象的存储器。当今存储器管理方案的上述缺点仅旨在提供常规系统的一些问题的概览,并且不旨在是穷尽性的。在仔细阅读了以下具体实施方式后,当今领域的其他问题和各非限制性性实施例的对应好处可变得显而易见。
技术实现思路
此处提供了简化的
技术实现思路
以帮助能够对以下更详细的描述和附图中的示例性、非限制性实施例的各方面有基本或大体的理解。然而,本
技术实现思路
并不旨在作为详尽的或穷尽的。相反,本节
技术实现思路
的唯一目的在于,以简化的形式提出与一些示例性、非限制性实施方式相关的一些概念,作为以下各实施方式的更详细的描述的序言。根据一个或多个实施例及其相应的公开内容,结合用于存储器管理的保守垃圾收集描述了各个非限制性方面。在这样的一个方面,提供了用于在保守垃圾收集算法内并发地标记和扫掠对象的方法。该方法可包括在脚本的执行期间生成各对象的堆,并跟踪包括在该脚本的未执行部分中的各脚本对象到堆上的相应存储器位置的集合。该实施例还可包括与脚本的执行并发地标记堆的至少一部分,使得经标记的堆包括可到达对象和不可到达对象。对于这个特定实施例,可到达对象是脚本的未执行部分可到达的,而不可到达对象是脚本的未执行部分不可到达的。该方法随后还可包括与脚本的执行并发地基于标记释放分配给各不可到达对象的存储器。在另一方面,公开了被配置成并发地标记和扫掠对象的存储器管理设备。在这一实施例中,存储器管理设备包括被配置成执行存储在存储器中的计算机可执行组件的处理器。计算机可执行组件包括堆组件、跟踪组件、标记组件和回收组件。堆组件被配置成在脚本的执行期间生成各对象的堆,而跟踪组件被配置成跟踪包括在该脚本的未执行部分中的脚本对象到该堆上的相应存储器位置的集合。标记组件随后被配置成与该脚本的执行并发地标记堆的至少一部分。对于这个实施例,经标记的堆包括脚本的未执行部分可到达的可到达对象,以及脚本的未执行部分不可到达的不可到达对象。回收组件随后被配置成与脚本的执行并发地且根据经标记的堆来释放分配给不可到达对象的存储器。在又一方面,公开了用于在保守垃圾收集算法中并发地标记和扫掠对象的计算机可读存储介质。在这一实施例中,计算机可读存储介质包括用于使得至少一个处理器执行各个动作的计算机可读指令。例如,这些动作包括生成与调用栈相关联的对象图,以及跟踪该对象图,使得包括在该调用栈的未执行部分中的脚本对象被跟踪到堆上的相应存储器位置的集合。这个实施例还包括与调用栈的执行并发地标记堆对象。对于这个特定实施例,经标记的堆包括调用栈的未执行部分可到达的可到达对象以及调用栈的未执行部分不可到达的不可到达对象。随后与调用栈的执行并发地基于经标记的堆来清除分配给不可到达对象的存储器。以下更详细地描述其他实施例和各非限制性性示例、场景和实现。附图说明参考附图进一步描述各非限制性实施方式,在附图中:图1示出了根据一实施例的便于实现保守垃圾收集算法的示例性系统;图2是示出了根据一实施例的对象的示例性堆的示图;图3是示出了根据一实施例的示例性对象图的示图;图4是示出了根据一实施例的对存储器的示例性释放的示图;图5是示出了根据一实施例的示例性存储器管理设备的框图;图6是示出根据一实施例的用于实现保守垃圾收集算法的示例性非限制性实施例的流程图;图7是示出根据一实施例的示例性资源管理单元的框图;图8是示出根据一实施例的用于并发地标记和扫掠对象的示例性非限制性实施例的流程图;图9是表示可实现在此处所述的各个实施例的示例性、非限制性联网环境的框图;以及图10是表示可实现此处所述的各个实施例的一个或多个方面的示例性、非限制性计算系统或操作环境的框图。具体实施方式概览如
技术介绍
中所指示的,实现在堆上的可到达对象和不可到达对象间进行区分的保守垃圾收集器算法是合乎需要的。在各个实施例中,就本机代码兼容性重新设计了存储器管理。在一方面,脚本对象是得到较少管理的对象,而非只是存储器的本机片段,使得各对象间的引用计数被消除。此外,实现了保守垃圾收集算法,其中没有假设是指针的所有事物都是已知的。以公共语言运行时(CLR)垃圾收集器为例,栈被有力地键入。然而,使用本机代码(例如,C代码和脚本代码),人们不知道栈上有什么。在这一方面,取代利用引用计数模型,可料想到是直接与对象进行交互的。在此公开的各个实施例涉及在保守垃圾收集算法中并发地标记和扫掠对象。此外,在此公开的各方面涉及并发地标记和扫掠对象以便于针对文档对象模型的脚本(例如,java脚本)的高效执行。在一示例性实施例中,并发标记包括遍历堆上的各对象,其中可到达的每一对象被分配了“1”,而不可到达的每一对象被分配了“0”。一旦并发标记已完成,并发扫掠器对堆进行扫描并将不可到达的对象(即,用“0”来标记的那些对象)放置在“空闲存储器”列表中。实现并发扫掠器的优点在于使用了较少的存储器,因为在脚本线程正在执行时存储器被回收回分配器。在此,应该注意,一些数据结构是随着实现并发的标记和扫掠而产生的。例如,一些数据结构维护与经标记的比特分开的空闲比特。此外,可维护分开的堆块页,使得可将整个页识别为空闲。因此相对于先前的技术而言,取回这些页所需的资源被最小化,在先前的技术中会对许多页不合需要地分配堆块,并由此需要更多资源用于进行取回。此外,通过实现所公开的各方面,整个页可用简单的检查而被快速识别为空闲。在另一方面,与常规扫掠器如何要求整个扫掠在任何经扫掠的存储器能够被进行该工作的线程重新使用之前发生形成对比,与扫掠过程并排地创建无锁队列。在这个实施例中,无锁队列可以是允许在扫掠期间将存储器的片段交回工作线程(即,执行网页的线程)的数据结构,这显著减少了用作工作集合的部分的存储器的量。因此,公开了更加增量式的回收机制,其中这种回收以更细的粒度被合乎需要地执行。用于保守垃圾收集的并发标记和扫掠当web浏览体验开始从具有最少交互性的对信息的单调呈现发展成在客户机侧具有许多交互性的更丰富应用或小程序体验时,若干问题已产生。更一般的,web浏览体验已发展成信息显示以及本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201210086589.html" title="用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集原文来自X技术">用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集</a>

【技术保护点】
一种方法,包括:在脚本的执行期间生成(600)各对象的堆;跟踪(610)包括在所述脚本的未执行部分中的各脚本对象到所述堆上的相应存储器位置的集合;与所述脚本的执行并发地标记(620)所述堆的至少一部分,其中经标记的堆包括所述脚本的未执行部分可到达的可到达对象,并且其中经标记的堆还包括所述脚本的未执行部分不可到达的不可到达对象;以及释放(630)分配给所述不可到达对象的存储器,其中所述释放基于所述标记并且与所述脚本的执行并发地执行。

【技术特征摘要】
2011.03.29 US 13/074,2261.一种保守垃圾收集方法,包括:在脚本的执行期间生成各对象的堆;跟踪包括在所述脚本的未执行部分中的各脚本对象到所述堆上的相应存储器位置的集合;与所述脚本的执行并发地标记所述堆的至少一部分,其中经标记的堆包括所述脚本的未执行部分可到达的可到达对象,并且其中经标记的堆还包括所述脚本的未执行部分不可到达的不可到达对象;以及释放分配给所述不可到达对象的存储器,其中所述释放基于所述标记并且与所述脚本的执行并发地执行。2.如权利要求1所述的方法,其特征在于,所述标记包括标记所述可到达对象。3.如权利要求1所述的方法,其特征在于,所述标记包括标记所述不可到达对象。4.如权利要求1所述的方法,其特征在于,所述释放包括将所述可到达对象分别保存在所述堆的原始存储位置中。5.如权利要求4所述的方法,其特征在于,所述保存包括根据所述堆内的各边界的固定集合来维护堆对象的分隔。6.如权利要求1所述的方法,其特征在于,还包括执行所述脚本。7.如权利要求6所述的方法,其特征在于,所述执行包括编译java脚本。8.如权利要求6所述的方法,其特征在于,所述执行包括修改文档对象模型。9.一种存储器管理设备,包括:具有存储在其上的计算机可执行组件的存储器;以及通信地耦合到所述存储器的处理器,所述处理器被配置成执行所述计算机可执行组件,所述计算机可执行组...

【专利技术属性】
技术研发人员:S·卢科C·CC·曼
申请(专利权)人:微软公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1