CN102736984A - 用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集 - Google Patents

用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集 Download PDF

Info

Publication number
CN102736984A
CN102736984A CN2012100865892A CN201210086589A CN102736984A CN 102736984 A CN102736984 A CN 102736984A CN 2012100865892 A CN2012100865892 A CN 2012100865892A CN 201210086589 A CN201210086589 A CN 201210086589A CN 102736984 A CN102736984 A CN 102736984A
Authority
CN
China
Prior art keywords
heap
script
mark
arrive
storer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012100865892A
Other languages
English (en)
Other versions
CN102736984B (zh
Inventor
S·卢科
C·C-C·曼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN102736984A publication Critical patent/CN102736984A/zh
Application granted granted Critical
Publication of CN102736984B publication Critical patent/CN102736984B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management
    • G06F2212/702Conservative garbage collection

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本发明涉及用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集。公开了用于保守垃圾收集的各方面。在一个方面,在脚本的执行期间生成各对象的堆,并跟踪未执行部分中的各脚本对象到堆上的各相应存储器位置。然后与执行该脚本并发地标记堆,使得经标记的堆包括可到达对象和不可到达对象。然后与执行脚本并发地基于标记释放分配给不可到达对象的存储器。在另一方面,生成与调用栈相关联的对象图,并跟踪该对象图使得跟踪该栈的未执行部分中的各脚本对象到堆上的各相应存储器位置。与执行栈并发地标记各堆对象,使得经标记的堆包括可到达对象和不可到达对象。然后与执行栈并发地基于经标记的堆来清除分配给各不可到达对象的存储器。

Description

用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集
技术领域
本发明涉及使用并发标记和并发扫掠的保守垃圾收集算法。
背景技术
作为与一些常规系统有关的背景,应注意计算设备传统上已存储了信息和相关联的应用。对于这些和相关的结果,还应注意实现高效的存储器管理方案可有助于实现最优计算性能。自动存储器管理方案中的开发与手动存储器管理方案相比已被很好地执行。垃圾收集器算法例如是自动存储器管理方案,其尝试取回被特定程序不再使用的各对象所占用的存储器。
跟踪式垃圾收集器是常见类型的垃圾收集器。跟踪式垃圾收集器首先确定哪些对象是可到达的(或者,可能是可到达的),并然后丢弃所有剩余的对象。可到达对象可以被定义成这样的对象:程序环境中存在可直接地或通过来自其他可到达对象的引用而通向该对象的某一变量。更精确地,对象一般可以以两种方式来到达。首先,假设被称为根的对象的特异集合(distinguished set)是可到达的。一般地,这些对象包括引用自调用栈内的任何地方的所有对象(即,当前正被调用的函数中的所有局部变量和参数)以及任何全局变量。其次,引用自可到达对象的任何对象本身被认为是可到达的。然而,常规垃圾收集器的复杂性在于这种垃圾收集器需要快速并高效地释放分配给不再为可到达的各对象的存储器。
当今存储器管理方案的上述缺点仅旨在提供常规系统的一些问题的概览,并且不旨在是穷尽性的。在仔细阅读了以下具体实施方式后,当今领域的其他问题和各非限制性性实施例的对应好处可变得显而易见。
发明内容
此处提供了简化的发明内容以帮助能够对以下更详细的描述和附图中的示例性、非限制性实施例的各方面有基本或大体的理解。然而,本发明内容并不旨在作为详尽的或穷尽的。相反,本节发明内容的唯一目的在于,以简化的形式提出与一些示例性、非限制性实施方式相关的一些概念,作为以下各实施方式的更详细的描述的序言。
根据一个或多个实施例及其相应的公开内容,结合用于存储器管理的保守垃圾收集描述了各个非限制性方面。在这样的一个方面,提供了用于在保守垃圾收集算法内并发地标记和扫掠对象的方法。该方法可包括在脚本的执行期间生成各对象的堆,并跟踪包括在该脚本的未执行部分中的各脚本对象到堆上的相应存储器位置的集合。该实施例还可包括与脚本的执行并发地标记堆的至少一部分,使得经标记的堆包括可到达对象和不可到达对象。对于这个特定实施例,可到达对象是脚本的未执行部分可到达的,而不可到达对象是脚本的未执行部分不可到达的。该方法随后还可包括与脚本的执行并发地基于标记释放分配给各不可到达对象的存储器。
在另一方面,公开了被配置成并发地标记和扫掠对象的存储器管理设备。在这一实施例中,存储器管理设备包括被配置成执行存储在存储器中的计算机可执行组件的处理器。计算机可执行组件包括堆组件、跟踪组件、标记组件和回收组件。堆组件被配置成在脚本的执行期间生成各对象的堆,而跟踪组件被配置成跟踪包括在该脚本的未执行部分中的脚本对象到该堆上的相应存储器位置的集合。标记组件随后被配置成与该脚本的执行并发地标记堆的至少一部分。对于这个实施例,经标记的堆包括脚本的未执行部分可到达的可到达对象,以及脚本的未执行部分不可到达的不可到达对象。回收组件随后被配置成与脚本的执行并发地且根据经标记的堆来释放分配给不可到达对象的存储器。
在又一方面,公开了用于在保守垃圾收集算法中并发地标记和扫掠对象的计算机可读存储介质。在这一实施例中,计算机可读存储介质包括用于使得至少一个处理器执行各个动作的计算机可读指令。例如,这些动作包括生成与调用栈相关联的对象图,以及跟踪该对象图,使得包括在该调用栈的未执行部分中的脚本对象被跟踪到堆上的相应存储器位置的集合。这个实施例还包括与调用栈的执行并发地标记堆对象。对于这个特定实施例,经标记的堆包括调用栈的未执行部分可到达的可到达对象以及调用栈的未执行部分不可到达的不可到达对象。随后与调用栈的执行并发地基于经标记的堆来清除分配给不可到达对象的存储器。
以下更详细地描述其他实施例和各非限制性性示例、场景和实现。
附图说明
参考附图进一步描述各非限制性实施方式,在附图中:
图1示出了根据一实施例的便于实现保守垃圾收集算法的示例性系统;
图2是示出了根据一实施例的对象的示例性堆的示图;
图3是示出了根据一实施例的示例性对象图的示图;
图4是示出了根据一实施例的对存储器的示例性释放的示图;
图5是示出了根据一实施例的示例性存储器管理设备的框图;
图6是示出根据一实施例的用于实现保守垃圾收集算法的示例性非限制性实施例的流程图;
图7是示出根据一实施例的示例性资源管理单元的框图;
图8是示出根据一实施例的用于并发地标记和扫掠对象的示例性非限制性实施例的流程图;
图9是表示可实现在此处所述的各个实施例的示例性、非限制性联网环境的框图;以及
图10是表示可实现此处所述的各个实施例的一个或多个方面的示例性、非限制性计算系统或操作环境的框图。
具体实施方式
概览
如背景技术中所指示的,实现在堆上的可到达对象和不可到达对象间进行区分的保守垃圾收集器算法是合乎需要的。在各个实施例中,就本机代码兼容性重新设计了存储器管理。在一方面,脚本对象是得到较少管理的对象,而非只是存储器的本机片段,使得各对象间的引用计数被消除。此外,实现了保守垃圾收集算法,其中没有假设是指针的所有事物都是已知的。以公共语言运行时(CLR)垃圾收集器为例,栈被有力地键入。然而,使用本机代码(例如,C代码和脚本代码),人们不知道栈上有什么。在这一方面,取代利用引用计数模型,可料想到是直接与对象进行交互的。
在此公开的各个实施例涉及在保守垃圾收集算法中并发地标记和扫掠对象。此外,在此公开的各方面涉及并发地标记和扫掠对象以便于针对文档对象模型的脚本(例如,java脚本)的高效执行。在一示例性实施例中,并发标记包括遍历堆上的各对象,其中可到达的每一对象被分配了“1”,而不可到达的每一对象被分配了“0”。一旦并发标记已完成,并发扫掠器对堆进行扫描并将不可到达的对象(即,用“0”来标记的那些对象)放置在“空闲存储器”列表中。
实现并发扫掠器的优点在于使用了较少的存储器,因为在脚本线程正在执行时存储器被回收回分配器。在此,应该注意,一些数据结构是随着实现并发的标记和扫掠而产生的。例如,一些数据结构维护与经标记的比特分开的空闲比特。此外,可维护分开的堆块页,使得可将整个页识别为空闲。因此相对于先前的技术而言,取回这些页所需的资源被最小化,在先前的技术中会对许多页不合需要地分配堆块,并由此需要更多资源用于进行取回。此外,通过实现所公开的各方面,整个页可用简单的检查而被快速识别为空闲。
在另一方面,与常规扫掠器如何要求整个扫掠在任何经扫掠的存储器能够被进行该工作的线程重新使用之前发生形成对比,与扫掠过程并排地创建无锁队列。在这个实施例中,无锁队列可以是允许在扫掠期间将存储器的片段交回工作线程(即,执行网页的线程)的数据结构,这显著减少了用作工作集合的部分的存储器的量。因此,公开了更加增量式的回收机制,其中这种回收以更细的粒度被合乎需要地执行。
用于保守垃圾收集的并发标记和扫掠
当web浏览体验开始从具有最少交互性的对信息的单调呈现发展成在客户机侧具有许多交互性的更丰富应用或小程序体验时,若干问题已产生。更一般的,web浏览体验已发展成信息显示以及与显示器上的对象的更丰富的交互性的混合。伴随这种发展的特定挑战基于使原来的文档对象模型(DOM)适应于流畅地处理脚本代码(诸如,java脚本对象)的体验,原来的文档对象模型最初主要是基于客户机上的本机代码为信息的单调呈现而设计的。
改进速度有助于促进平滑的用户体验。例如,使用过去的飞出菜单,web体验基于与服务器的通信对延迟进行闪烁。然而,脚本允许小程序修改飞出菜单上的DOM,而无需返回到服务器。由于人们想要在不返回到服务器的情况下对飞出菜单进行更多动作,使脚本代码快速执行已成为挑战。
由于用户体验会受到高效地脚本化DOM的较大影响,因此将DOM改变成尽可能快以最大化交互响应是合乎需要的。在过去,由于对包括使任何对象可脚本化的一组接口(例如,iDispatch、iActiveScript等)的对象链接和嵌入(OLE)自动化的使用,脚本引擎和DOM的本机类之间的通信是低劣的。然而,这些方法是慢的,并因此期望改进。因此,在此公开的方面涉及通过在保守垃圾收集算法内并发地标记和扫掠对象来提升脚本执行速度。
图1示出了根据一实施例的便于实现保守垃圾收集算法的示例性系统。如图所示,系统100可包括存储器管理单元110,该单元通信地耦合到存储器120。在一方面,存储器管理单元110被配置成实现保守垃圾收集算法来管理存储器120中的存储器空间。此外,存储器管理单元110被配置成生成与脚本112的执行相关联的经标记的对象图114。例如,脚本112可以是对DOM执行的java脚本,其中java脚本包括要求分配存储器120中的存储器空间的各个对象。在特定实施例中,为了便于在“可到达的”和“不可到达的”各对象间进行区分,根据包括在经标记的对象图114中的各脚本对象是否可被脚本112的未执行部分达到来标记这些脚本对象。
在一方面,分配给脚本对象的存储器包括将这些对象存储在堆上。接着参考图2,提供了根据一实施例的对象的示例性堆的框图。如图所示,堆200可包括可用存储器210以及所分配的与各个对象220、230、240、250、260和270相对应的存储器。对于这个特定示例,对象240和270对应于指针值,而对象220、230、250和260对应于整数值。即对象240是引用了对象230所表示的整数值的指针值,而对象270是引用了对象260所表示的整数值的指针值。
可料想,各堆对象可被标记,使得各可到达对象可容易地区别于各不可到达对象。接着参考图3,提供了示出示例性对象图的示图,该示例性对象图便于映射堆上的可到达/不可到达对象。如图所示,对象图300将包括在未执行的调用栈部分310中的对象映射至经标记的堆320。为此,应注意,经标记的堆320和可用存储器330一般分别与堆200和可用存储器210类似。
在一方面,利用对象图300来确定经标记的堆320上的哪些对象是未执行的调用栈部分310可到达的。即跟踪包括在未执行的调用栈部分310中的根对象到经标记的堆320上的相应存储器位置,其中这些存储器位置被认为是可到达的。随后可料想到,对可到达指针值执行对根对象的后续跟踪,以标识出被那些指针值引用的可到达对象。此处,应注意,对可到达整数值可跳过后续跟踪,因为这些整数值没有引用其他值。对于这个特定示例,由于可到达对象390是对应于指针值的根对象,因此对可到达对象390执行后续跟踪,该可到达对象390标识对应于整数值的可到达对象380。然而,对可到达对象340和370可跳过后续跟踪,因为这些对象是对应于整数值的根对象。
应该注意,还可以利用对象图300来标识未执行的调用栈部分310不可到达的对象。在这个特定示例中,不可到达对象350和360被认为是不可到达的,因为它们不对应于未执行的调用栈部分310中的根对象,而且它们也没有被可到达的指针对象引用。
在标识了可到达/不可到达对象之后,应料想到,可到达或不可到达对象中的至少一个被标记,使得它们可容易地区别于彼此。在一方面,这种标记与调用栈的执行并发地发生。对于这个特定示例,可到达对象340、可到达对象370、可到达对象380和可到达对象390用“1”进行标记,而不可到达对象350和不可到达对象360用“0”进行标记。此处,普通技术人员应理解,标记对象可以以多种方式中的任何一个实现,该多种方式包括例如在每一对象表示内向这种标记分配一比特。
在已经合适地标记了对象图之后,可以清除之前分配给被标识为不可到达的堆对象的存储器。在一方面,对这种存储器的清除与调用栈的执行并发地发生。接着参考图4,提供了根据一实施例的对存储器的示例性释放的示图。如图所示,对象图400包括已扫掠的堆420,其一般与堆200和320类似,其中堆420描绘了对之前分配给不可到达对象350和360的存储器的释放。即除了可用存储器430以外,堆420现在还包括已释放的存储器450和460。然而,在一方面,将可到达对象440、470、480和490保存在其原始存储位置中(即,已扫掠的堆420没有被损坏(collapse))。
接着参考图5,一框图示出了被配置成根据各个方面实现保守垃圾收集算法的示例性存储器管理单元。如图所示,存储器管理单元500可包括处理器组件510、存储器组件520、堆组件530、跟踪组件540、标记组件550和回收组件560。
在一个方面中,处理器组件510被配置成执行与执行多个功能中的任何功能相关的计算机可读指令。处理器组件510可以是单个处理器或多个处理器,专用于分析要从存储器管理单元500发送的信息和/或生成可由存储器组件520、堆组件530、跟踪组件540、标记组件550和/或回收组件560利用的信息。另外地或另选地,处理器组件510可被配置成控制存储器管理单元500的一个或多个组件。
在另一方面中,存储器组件520被耦合至处理器组件510并被配置成存储由处理器组件510执行的计算机可读指令。存储器组件520还可被配置成存储包括由堆组件530、跟踪组件540、标记组件550、和/或回收组件560中的任何组件生成的数据的任何多种其它类型的数据。存储器组件520可以被配置成多个不同的配置,包括作为随机存取存储器、带后备电源的存储器、硬盘、磁带等等。还可以在存储器组件520上实现各种特征,如压缩和自动备份,如使用独立驱动器冗余阵列配置。
如图所示,存储器管理单元500还可包括堆组件530和跟踪组件540。在这个实施例中,堆组件530被配置成在脚本的执行期间生成各对象的堆,而跟踪组件540被配置成跟踪包括在该脚本的未执行部分中的脚本对象到该堆上的相应存储器位置的集合。
在另一方面,存储器管理设备500还包括标记组件550。在这个实施例中,标记组件550被配置成与该脚本的执行并发地标记堆的至少一部分。对于这个实施例,经标记的堆包括脚本的未执行部分可到达的可到达对象,以及被认为是脚本的未执行部分不可到达的不可到达对象。
在其他方面,存储器管理设备500还包括回收组件560。在这个实施例中,回收组件560被配置成与脚本的执行并发地且根据经标记的堆来释放分配给各不可到达对象的存储器。在特定实施例中,回收组件560可被配置成在释放分配给各不可到达对象的存储器的整个部分之前回收分配给各不可到达对象的存储器的一部分。在另一实施例中,回收组件560可被配置成将各可到达对象分别保存在堆的各原始存储位置中。例如,回收组件560可被配置成根据堆内的各边界的固定集合来维护各堆对象的分隔。
对于一些实施例,存储器管理设备500可被配置成执行堆组件530用来生成对象的堆的脚本。为此,应该理解,存储器管理设备500可被配置成执行多种脚本类型中的任何一种。例如,在特定实施例中,存储器管理设备500被配置成编译java脚本。在执行该脚本后,应料想到,存储器管理设备500随后还被配置成基于脚本的执行来修改文档对象模型。
图6是示出根据一实施例的用于实现保守垃圾收集算法的示例性非限制性实施例的流程图。在600处,在脚本的执行期间生成对象的堆。接着,在610处,跟踪包括在脚本的未执行部分中的脚本对象到堆上的相应存储器位置的集合。然后在620处,与脚本的执行并发地标记堆。对于这个特定实施例,经标记的堆包括脚本的未执行部分可到达的可到达对象,以及脚本的未执行部分不可到达的不可到达对象。在640处,随后与脚本的执行并发地基于经标记的堆来释放分配给各不可到达对象的存储器。
接着参考图7,示出了被配置成根据各个方面并发地标记和扫掠对象的示例性资源管理单元的框图。如图所示,资源管理单元700可包括处理器组件710、存储器组件720、图生成组件730、跟踪组件740、标记组件750和释放组件760。
类似于存储器管理单元500中的处理器组件510,处理器组件710被配置成执行与执行多个功能中的任何功能相关的计算机可读指令。处理器组件710可以是单个处理器或多个处理器,专用于分析从资源管理单元700发送的信息和/或生成可由存储器组件720、图生成组件730、跟踪组件740、标记组件750和/或释放组件760利用的信息。另外地或另选地,处理器组件710可被配置成控制资源管理单元700的一个或多个组件。
在另一方面中,存储器组件720被耦合至处理器组件710并被配置成存储由处理器组件710执行的计算机可读指令。存储器组件720还可被配置成存储包括由图生成组件730、跟踪组件740、标记组件750、和/或释放组件760中的任何组件生成的数据的任何多种其它类型的数据。此处,应注意,存储器组件720与存储器管理单元500中的存储器组件520类似。因此,可以理解,存储器组件520的任何前述特征/配置也适用于存储器组件720。
如图所示,资源管理单元700还可包括图生成组件730和跟踪组件740。在这个实施例中,图生成组件730被配置成生成与调用栈相关联的对象图,而跟踪组件740被配置成跟踪该对象图,使得跟踪包括在该调用栈的未执行部分中的脚本对象到堆上的相应存储器位置的集合。
在另一方面,资源管理单元700还可包括标记组件750。在这个实施例中,标记组件750被配置成与调用栈的执行并发地标记各堆对象。对于这个实施例,经标记的堆包括调用栈的未执行部分可到达的可到达对象以及被认为是调用栈的未执行部分不可到达的不可到达对象。
如图所示,资源管理单元700还可包括释放组件760。在这个实施例中,释放组件760被配置成与调用栈的执行并发地清除分配给各不可到达对象的存储器。在此,应料想到,可基于由标记组件750查明的经标记的堆来清除该存储器。在一方面,释放组件760还可被配置成将调用栈的未执行部分可到达的各对象的存储分别保存在堆内的它们的原始存储器位置中。在另一方面,释放组件760可被配置成回收分配给各不可到达对象的存储器的部分。对于这个特定实施例,释放组件760还可被配置成在释放分配给各不可到达对象的存储器的整个部分之前先回收这个部分。
图8是示出根据一实施例的用于并发地标记和扫掠对象的示例性非限制性实施例的流程图。在800处,生成与调用栈相关联的对象图。在810处,随后跟踪该对象图,使得跟踪包括在该调用栈的未执行部分中的脚本对象到堆上的相应存储器位置的集合。接着,在820处,与调用栈的执行并发地标记堆对象。对于这个特定实施例,经标记的堆包括调用栈的未执行部分可到达的可到达对象以及调用栈的未执行部分不可到达的不可到达对象。在830处,随后与调用栈的执行并发地基于经标记的堆来清除分配给各不可到达对象的存储器。
示例性联网以及分布式环境
本领域普通技术人员可以明白,此处所描述的用于在保守垃圾收集算法内并发地标记和扫掠对象的各个实施例可以结合任何计算机或其他客户机或服务器设备来实现,该任何计算机或其它客户机或服务器设备可作为计算机网络的一部分来部署或者被部署在分布式计算环境中,并且可以连接到任何种类的数据存储。在这一点上,此处描述的各实施例可在具有任何数量的存储器或存储单元的、并且任何数量的应用和进程跨任何数量的存储单元发生的任何计算机系统或环境中实现。这包括但不限于具有部署在具有远程或本地存储的网络环境或分布式计算环境中的服务器计算机和客户计算机的环境。
附图9提供了示例性联网或分布式计算环境的非限制性性示意图。该分布式计算环境包括计算对象或设备910、912等以及计算对象或设备920、922、924、926、928等,这些计算对象或设备可包括如由应用930、932、934、936、938表示的程序、方法、数据存储、可编程逻辑等。可以理解,计算对象或设备910、912等以及计算对象或设备920、922、924、926、928等可包括不同的设备,诸如PDA、音频/视频设备、移动电话、MP3播放器、膝上型计算机等。
每个计算对象或设备910、912等以及计算对象或设备920、922、924、926、928等可经由通信网络924或直接或间接地与一个或多个其他计算对象或设备910、912等以及计算对象或设备920、922、926、928、940等通信。即使在图9中被示为单个元件,但网络940可包括向图9的系统提供服务的其他计算对象或解释设备,和/或可表示未示出的多个互连网络。每个计算对象或设备910、912等或920、922、924、926、928等还可包含诸如应用930、932、934、936、938之类的应用,该应用可利用API或适用于与根据各个实施例来提供的存储器管理系统进行通信或实现该存储器管理系统的其他对象、软件、固件和/或硬件。
存在支持分布式计算环境的各种系统、组件和网络配置。例如,计算系统可由有线或无线系统、本地网络或广泛分布的网络连接在一起。当前,许多网络被耦合至因特网,后者为广泛分布的计算提供了基础结构并包含许多不同的网络,但任何网络基础结构可用于变得与如各实施例中所描述的技术相关联的示例性通信。
由此,可使用诸如客户端/服务器、对等、或混合体系结构之类的网络拓扑结构和网络基础结构的主机。在客户端/服务器体系结构中,尤其在联网系统中,客户端通常是访问另一计算机(例如,服务器)所提供的共享网络资源的计算机。在附图9的图示中,作为非限制性性示例,计算对象或设备920、922、924、926、928等可被认为是客户机和计算对象,或者设备910、912等可被认为是服务器,其中计算对象或设备910、912等提供数据服务,诸如从计算对象或设备920、922、924、926、928等接收数据、存储数据、处理数据、向计算对象或设备920、922、924、926、928发送数据等,但任何计算机都可取决于环境而被认为是客户机、服务器或两者。这些计算设备中的任一个可以处理数据,或请求可指示如此处参考一个或多个实施例描述的来自任何平台的信息即服务的基础结构以及相关技术的服务或任务。
服务器通常是可通过诸如因特网或无线网络基础架构之类的远程网络或本地网络访问的远程计算机系统。客户端进程可在第一计算机系统中活动,而服务器进程可在第二计算机系统中活动,它们通过通信介质相互通信,由此提供分布式功能并允许多个客户端利用服务器的信息收集能力。按照用户简档来利用的任何软件对象可以单独提供或跨多个计算设备或对象分布。
例如,在其中通信网络/总线940是因特网的网络环境中,计算对象或设备910、912等可以是计算对象或设备920、922、924、926、928等经由诸如HTTP等多种已知协议中的任一种与其通信的web服务器。如所提及的,计算对象或设备910、912等还可用作计算对象或设备920、922、924、926、928等,或者相反,这可以是分布式计算环境的特性。
示例性计算设备
如所提到的,在此描述的各个实施例适用于其中可能需要实现用于在保守垃圾收集算法内并发地标记和扫掠对象的体系结构的任何设备。因此,应当理解,结合此处描述的各实施例来使用,即在设备可以结合用所标记的整数实现保守垃圾收集算法来提供某个功能的任何地方构想了各种种类的手持式、便携式和其它计算设备和计算对象。因此,在下面的图10中描述的以下通用远程计算机仅是一个示例,且所公开的主题的各实施例可用具有网络/总线互操作性和交互的任何客户端来实现。
尽管并不是必需的,但各实施例的任意一个可以部分地经由操作系统来实现,以供设备或对象的服务开发者使用,和/或被包括在结合可操作组件来操作的应用软件中。软件可在诸如客户机工作站、服务器或其他设备之类的一个或多个计算机所执行的诸如程序模块之类的计算机可执行指令的通用上下文中描述。本领域的技术人员可以理解,网络交互可以用各种计算机系统配置和协议来实施。
因此,图10示出了其中可实现一个或多个实施例的合适的计算系统环境1000的一个示例,但是上面已经弄清楚,计算系统环境1000仅为合适的计算环境的一个示例,并且不旨在对各实施例中的任意一个的使用范围或功能提出任何限制。不应将计算环境1000解释为对示例性操作环境1000中示出的任一组件或其组合有任何依赖性或要求。
参考图10,用于实现此处的一个或多个实施例的示例性远程设备可以包括手持式计算机1010形式的通用计算设备。手持式计算机1010的组件可以包括但不限于:处理单元1020、系统存储器1030和将包括系统存储器在内的各种系统组件耦合至处理单元1020的系统总线1021。
计算机1010通常包括各种计算机可读介质,并且可以是可由计算机1010访问的任何可用介质。系统存储器1030可包括诸如只读存储器(ROM)和/或随机存取存储器(RAM)之类的易失性和/或非易失性存储器形式的计算机存储介质。作为示例而非限制性,存储器1030还可以包括操作系统、应用程序、其他程序模块、和程序数据。
用户可以通过输入设备1040向计算机1010输入命令和信息。监视器或其他类型的显示设备也经由诸如输出接口1050之类的接口连接到系统总线1021。除监视器之外,计算机还可以包括其他外围输出设备,如扬声器和打印机,它们可以通过输出接口1050连接。
计算机1010可使用到一个或多个其他远程计算机(诸如远程计算机1070)的逻辑连接在联网或分布式环境中操作。远程计算机1070可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点、或者任何其他远程媒体消费或传输设备,并且可包括以上关于计算机1010所述的任何或全部元件。图10所示的逻辑连接包括诸如局域网(LAN)或广域网(WAN)之类的网络1071,但也可包括其他网络/总线。这些联网环境在家庭、办公室、企业范围的计算机网络、内联网和因特网中是常见的。
如上所述,尽管结合各种计算设备、网络和广告体系结构描述了各示例性实施例,但基本概念可被应用于其中期望管理存储器的任何网络系统和任何计算设备或系统。
有多种实现此处描述的一个或多个实施例的方式,例如,使应用和服务能使用来自任何平台的存储器管理的适当API、工具包、驱动程序代码、操作系统、控件、独立或可下载的软件对象等等。可以从API(或其他软件对象)的观点以及从便于根据所描述的实施例中的一个或多个提供存储器管理系统的软件或硬件对象来构想各实施例。此处描述的各种实现和实施例可以具有完全采用硬件、部分采用硬件并且部分采用软件、以及采用软件的方面。
本文中所使用的词语“示例性”意味着用作示例、实例、或说明。为避免疑惑,本文所公开的主题不限于这些示例。另外,本文中被描述为“示例性”的任何方面或设计不一定被解释为比其他方面或设计更优选或有利,它也不意味着排除本领域普通技术人员已知的等效示例性结构和技术。而且,就术语“包括”、“具有”、“包含”和其他类似的词语在详细描述或权利要求书中的使用而言,为避免疑惑,这样的术语旨在以类似于术语“包括”作为开放的过渡词的方式解释而不排除任何附加或其他元素。
如所述的,此处所述的各种技术可结合硬件或软件或,在适当时,以两者的组合来实现。如此处所使用的,术语“组件”、“系统”等同样旨在指计算机相关实体,或者是硬件、硬件和软件的组合、软件或者是执行中的软件。例如,组件可以是,但不限于是,在处理器上运行的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,在计算机上运行的应用和计算机都可以是组件。一个或多个组件可以驻留在进程和/或执行线程中,并且组件可以位于一个计算机内和/或分布在两个或更多计算机之间。
如前所述的系统已经参考若干组件之间的交互来描述。可以理解,这些系统和组件可包括组件或指定的子组件、某些指定的组件或子组件和/或附加的组件,并且根据上述内容的各种置换和组合。子组件还可作为通信地耦合到其他组件的组件来实现,而不是被包括在父组件内(层次性)。另外,注意到,一个或多个组件也可以合并到提供聚合功能的单个组件中,或者也可以分成多个单独的子组件,并且,可以提供诸如管理层之类的任何一个或更多中间层,以可通信地耦合到这样的子组件,以便提供集成的功能。此处所述的任何组件也可与一个或多个此处未专门描述的但本领域技术人员一般已知的其他组件进行交互。
鉴于以上描述的示例性系统,参考各附图的流程图将可以理解依照所公开的主题实现的方法。尽管为了说明简洁起见,按照一系列框示出和描述了方法,但是,应该理解和知道,所要求保护的主题不限于框的顺序,因为一些框可以按与此处所描绘和描述的不同的顺序进行和/或与其它框并发地进行。尽管经由流程图示出了非顺序或分支的流程,但可以理解,可实现达到相同或类似结果的各种其他分支、流程路径和框的次序。此外,并非全部所示的框都是实现下面所述的方法所必需的。
虽然在某些实施例中,说明了客户端侧观点,但要出于避免存在相对应的服务器观点的疑问来理解,反之亦然。类似地,在实施方法的地方,可以提供具有存储和被配置成经由一个或多个组件实施该方法的至少一个处理器的相对应的设备。
尽管结合各附图的优选实施例描述了各实施例,但可以理解,可以使用其他类似的实施例,或可以对所描述的实施例进行修改和添加来执行相同的功能而不背离本发明。而且,此处描述的各实施例的一个或多个方面可以在多个处理芯片或设备中实现或跨多个处理芯片或设备实现,且存储可以类似地跨多个设备来实现。因此,本发明不应限于任何单个实施例,而是应该根据所附权利要求书的广度和范围来解释。

Claims (15)

1.一种方法,包括:
在脚本的执行期间生成(600)各对象的堆;
跟踪(610)包括在所述脚本的未执行部分中的各脚本对象到所述堆上的相应存储器位置的集合;
与所述脚本的执行并发地标记(620)所述堆的至少一部分,其中经标记的堆包括所述脚本的未执行部分可到达的可到达对象,并且其中经标记的堆还包括所述脚本的未执行部分不可到达的不可到达对象;以及
释放(630)分配给所述不可到达对象的存储器,其中所述释放基于所述标记并且与所述脚本的执行并发地执行。
2.如权利要求1所述的方法,其特征在于,所述标记(620)包括标记所述可到达对象。
3.如权利要求1所述的方法,其特征在于,所述标记(620)包括标记所述不可到达对象。
4.如权利要求1所述的方法,其特征在于,所述释放(630)包括将所述可到达对象分别保存在所述堆的原始存储位置中。
5.如权利要求4所述的方法,其特征在于,所述保存包括根据所述堆内的各边界的固定集合来维护堆对象的分隔。
6.如权利要求1所述的方法,其特征在于,还包括执行所述脚本。
7.如权利要求6所述的方法,其特征在于,所述执行包括编译java脚本。
8.如权利要求6所述的方法,其特征在于,所述执行包括修改文档对象模型。
9.一种存储器管理设备,包括:
具有存储在其上的计算机可执行组件的存储器;以及
通信地耦合到所述存储器的处理器,所述处理器被配置成执行所述计算机可执行组件,所述计算机可执行组件包括:
堆组件(530),它被配置成在脚本的执行期间生成各对象的堆;
跟踪组件(540),它被配置成跟踪包括在所述脚本的未执行部分中的各脚本对象到所述堆上的相应存储器位置的集合;
标记组件(550),它被配置成与所述脚本的执行并发地标记所述堆的至少一部分,其中经标记的堆包括所述脚本的未执行部分可到达的可到达对象,并且其中所述经标记的堆还包括所述脚本的未执行部分不可到达的不可到达对象;以及
回收组件(560),它被配置成根据所述经标记的堆释放分配给所述不可到达对象的存储器,其中所述回收组件还被配置成与所述脚本的执行并发地释放所述存储器。
10.如权利要求9所述的存储器管理设备,其特征在于,所述标记组件(550)被配置成仅标记所述可到达对象或所述不可到达对象中的一个。
11.如权利要求9所述的存储器管理设备,其特征在于,所述回收组件(560)被配置成在释放分配给所述不可到达对象的存储器的整个部分之前先回收分配给所述不可到达对象的存储器的一部分。
12.如权利要求9所述的存储器管理设备,其特征在于,所述回收组件(560)被配置成将可到达对象分别保存在堆的原始存储器位置中。
13.如权利要求12所述的存储器管理设备,其特征在于,所述回收组件(560)被配置成根据所述堆内的各边界的固定集合来维护各堆对象的分隔。
14.如权利要求9所述的存储器管理设备,其特征在于,还包括被配置成执行所述脚本的执行组件。
15.如权利要求14所述的存储器管理设备,其特征在于,还包括被配置成基于所述脚本的执行来修改文档对象模型的组件。
CN201210086589.2A 2011-03-29 2012-03-28 保守垃圾收集方法和存储器管理设备 Active CN102736984B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/074,226 2011-03-29
US13/074,226 US8527560B2 (en) 2011-03-29 2011-03-29 Conservative garbage collecting with concurrent marking and concurrent sweeping for memory management

Publications (2)

Publication Number Publication Date
CN102736984A true CN102736984A (zh) 2012-10-17
CN102736984B CN102736984B (zh) 2017-03-01

Family

ID=46928698

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210086589.2A Active CN102736984B (zh) 2011-03-29 2012-03-28 保守垃圾收集方法和存储器管理设备

Country Status (7)

Country Link
US (1) US8527560B2 (zh)
EP (1) EP2691860B1 (zh)
JP (1) JP2014513342A (zh)
KR (1) KR101961501B1 (zh)
CN (1) CN102736984B (zh)
ES (1) ES2872175T3 (zh)
WO (1) WO2012134728A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107145451A (zh) * 2017-05-09 2017-09-08 深圳市茁壮网络股份有限公司 一种JavaScript对象存储、回收方法及装置
CN110291508A (zh) * 2017-02-01 2019-09-27 微软技术许可有限责任公司 垃圾收集器

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10572181B2 (en) 2017-02-01 2020-02-25 Microsoft Technology Licensing, Llc Multiple stage garbage collector

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197521B2 (en) * 2003-11-21 2007-03-27 Intel Corporation Method and system performing concurrently mark-sweep garbage collection invoking garbage collection thread to track and mark live objects in heap block using bit vector
US20080281885A1 (en) * 2007-05-08 2008-11-13 Microsoft Corporation Interleaved garbage collections
CN101484876A (zh) * 2006-07-14 2009-07-15 英特尔公司 多任务虚拟机的堆组织

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5088036A (en) * 1989-01-17 1992-02-11 Digital Equipment Corporation Real time, concurrent garbage collection system and method
JPH04260948A (ja) * 1991-01-18 1992-09-16 Mitsubishi Electric Corp メモリシステム
US5355483A (en) * 1991-07-18 1994-10-11 Next Computers Asynchronous garbage collection
JP3023316B2 (ja) * 1996-01-31 2000-03-21 株式会社東芝 情報処理装置の資源管理装置、及び情報処理システムにおける資源管理方法
US6289360B1 (en) * 1998-10-07 2001-09-11 International Business Machines Corporation Method and system for eliminating synchronization between sweep and allocate in a concurrent garbage collector
GB9907278D0 (en) * 1999-03-31 1999-05-26 Philips Electronics Nv Memory reclamation method and apparatus
JP2000339214A (ja) * 1999-05-28 2000-12-08 Nec Corp 実時間メモリ管理システム、及び実時間メモリ管理方法
US6622226B1 (en) * 2000-07-31 2003-09-16 Microsoft Corporation Method and system for using a mark-list for garbage collection
US6502111B1 (en) * 2000-07-31 2002-12-31 Microsoft Corporation Method and system for concurrent garbage collection
CA2421591C (en) 2000-09-13 2011-08-23 Geodesic Systems, Incorporated Conservative garbage collectors that can be used with general memory allocators
US7089272B1 (en) * 2003-06-18 2006-08-08 Sun Microsystems, Inc. Specializing write-barriers for objects in a garbage collected heap
ATE479942T1 (de) * 2003-06-30 2010-09-15 Panasonic Corp Speicherbereinigungssystem
US7321908B2 (en) * 2003-07-23 2008-01-22 International Business Machines Corporational Mostly concurrent garbage collection
US20050198088A1 (en) 2004-03-03 2005-09-08 Sreenivas Subramoney Method and system for improving the concurrency and parallelism of mark-sweep-compact garbage collection
US7636745B1 (en) * 2004-03-12 2009-12-22 Sun Microsystems, Inc. Concurrent-marking-initiation heuristic
US7340494B1 (en) * 2004-03-12 2008-03-04 Sun Microsystems, Inc. Garbage-first garbage collection
US7533228B1 (en) * 2005-05-27 2009-05-12 Sun Microsystems, Inc. Two-pass sliding compaction
US7499961B2 (en) * 2006-01-12 2009-03-03 Sun Microsystems, Inc. Method and apparatus for limiting the size and facilitating maintenance of remembered sets in a space incremental garbage collector
CN101046755B (zh) * 2006-03-28 2011-06-15 郭明南 一种计算机自动内存管理的系统及方法
US7480782B2 (en) * 2006-06-14 2009-01-20 Sun Microsystems, Inc. Reference-updating using per-chunk referenced-address ranges in a compacting garbage collector
US7840612B2 (en) * 2006-10-23 2010-11-23 Research In Motion Limited Methods and apparatus for concurrently executing a garbage collection process during execution of a primary application program
US7614003B2 (en) * 2006-10-23 2009-11-03 Adobe Systems Incorporated Rendering hypertext markup language content
US7890711B2 (en) * 2007-04-18 2011-02-15 Oracle America, Inc. Methods, apparatus, and program products for improved finalization
US7685185B2 (en) * 2007-06-29 2010-03-23 Microsoft Corporation Move-in/move-out notification for partial replica synchronization
US8504596B2 (en) * 2007-07-25 2013-08-06 Apple Inc. Extended garbage collection
WO2010033997A2 (en) 2008-09-22 2010-03-25 Fiji Systems, Llc Hybrid fragmenting real time garbage collection
US8612493B2 (en) * 2008-10-30 2013-12-17 International Business Machines Corporation Allocation cache premarking for snap-shot-at-the-beginning concurrent mark-and-sweep collector

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7197521B2 (en) * 2003-11-21 2007-03-27 Intel Corporation Method and system performing concurrently mark-sweep garbage collection invoking garbage collection thread to track and mark live objects in heap block using bit vector
CN101484876A (zh) * 2006-07-14 2009-07-15 英特尔公司 多任务虚拟机的堆组织
US20080281885A1 (en) * 2007-05-08 2008-11-13 Microsoft Corporation Interleaved garbage collections

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110291508A (zh) * 2017-02-01 2019-09-27 微软技术许可有限责任公司 垃圾收集器
CN107145451A (zh) * 2017-05-09 2017-09-08 深圳市茁壮网络股份有限公司 一种JavaScript对象存储、回收方法及装置
CN107145451B (zh) * 2017-05-09 2020-09-25 深圳市茁壮网络股份有限公司 一种JavaScript对象存储、回收方法及装置

Also Published As

Publication number Publication date
KR101961501B1 (ko) 2019-03-22
WO2012134728A2 (en) 2012-10-04
WO2012134728A3 (en) 2012-12-06
ES2872175T3 (es) 2021-11-02
EP2691860A2 (en) 2014-02-05
JP2014513342A (ja) 2014-05-29
EP2691860A4 (en) 2015-01-21
US8527560B2 (en) 2013-09-03
CN102736984B (zh) 2017-03-01
KR20140009422A (ko) 2014-01-22
EP2691860B1 (en) 2021-05-05
US20120254265A1 (en) 2012-10-04

Similar Documents

Publication Publication Date Title
CN103493025A (zh) 用于存储器管理的保守垃圾收集和经标记的整数
CN101193008B (zh) 一种回放用户的网页访问轨迹的方法及系统
US20060168591A1 (en) Method and system to correlate and consolidate a plurality of events
US8615761B2 (en) Virtual machine package generation system, virtual machine package generation method, and virtual machine package generation program
KR102310187B1 (ko) 복수의 엣지와 클라우드를 포함하는 분산 컴퓨팅 시스템 및 이의 적응적 지능 활용을 위한 분석 모델 제공 방법
CN101297287A (zh) 获得服务器使用信息
Johansen et al. A tacoma retrospective
CN102307206A (zh) 基于云存储的快速访问虚拟机镜像的缓存系统及其方法
CN108063824A (zh) 一种云服务系统及构建方法
CN102369714A (zh) 云计算系统中云终端访问云服务器的方法及云计算系统
CN101860564A (zh) 基于协议的服务组合系统和方法
CN104077652A (zh) 一种基于旅游相关数据的数据中心管理方法及系统
CN102736984A (zh) 用于存储器管理的使用并发标记和并发扫掠的保守垃圾收集
CN102103505A (zh) 工作流界面生成方法及设备
CN114489622A (zh) 静态资源管理方法、Node.js应用、电子设备和存储介质
CN102724272A (zh) 一种电视台业务发布数据的备份方法
CN113595832A (zh) 一种网络数据获取系统和方法
Gonçalves et al. Archmeds: An infrastructure for dependable service-oriented architectures
Heydarnoori et al. Towards an automated deployment planner for composition of web services as software components
CN104808968A (zh) 全局数据的存储、上报方法与装置和系统
Martínez et al. A conceptual model for context-aware dynamic architectures
CN1298507A (zh) 分布式系统中用于确定远程对象状态的方法和装置
Moreau et al. Mobile objects in Java
CN113157341B (zh) 对象的资源环境自适应处理方法、装置和电子设备
CN114546787A (zh) 一种分布式系统监控方法和系统、计算机存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1175270

Country of ref document: HK

C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150729

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150729

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

GR01 Patent grant
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1175270

Country of ref document: HK