用于垃圾收集的三色位图阵列制造技术

技术编号:37675797 阅读:12 留言:0更新日期:2023-05-26 04:40
识别存储器地址处的第一对象。计算位图中对应于该存储器地址的第一索引位置。在第一索引位置处设置一位。检测指向第一对象内的子对象的指针。使用该指针来标识该子对象的存储器地址。计算位图中对应于该存储器地址的第二索引位置。在第二索引位置处设置位。还在与第一索引位置相邻的第三索引位置处设置位。索引位置相邻的第三索引位置处设置位。索引位置相邻的第三索引位置处设置位。

【技术实现步骤摘要】
【国外来华专利技术】用于垃圾收集的三色位图阵列

技术介绍

[0001]本公开涉及计算机系统中的垃圾收集,并且更具体地,涉及标记不可达资源以用于垃圾收集。
[0002]当程序需要资源来完成功能时,一些计算机系统将资源加载到存储器中。这些资源可以由程序内(例如,该程序所使用的另一资源内)的指针来标识,该指针标识资源及其位置。
[0003]一些计算机系统偶尔执行垃圾收集以释放由计算机系统不再需要的资源(例如,已经被加载到存储器中但是不再由最初需要它们的程序使用的资源)使用的存储器。为此,垃圾收集通常包括识别那些不需要的资源的方法。一些方法包括跟踪资源之间的指针以确定存储器中的任何资源是否未被当前使用的程序或其它资源指向。

技术实现思路

[0004]本公开的一些实施例可以被图示为一种方法,该方法包括识别在第一存储器地址处的第一对象。该方法还可以包括计算位图中的第一索引位置。第一索引位置可以对应于第一存储器地址。该方法还可以包括在第一索引位置处设置第一位。该方法还可以包括检测指向第一对象内的子对象的指针。该方法还可以包括使用指针来识别子对象的第二存储器地址。该方法还可以包括计算位图中的第二索引位置。第二索引位置可以对应于第二存储器地址。该方法还可以包括在第二索引位置处设置第二位。该方法还可以包括在第三索引位置处设置第三位。第三索引位置可以与第一索引位置相邻。
[0005]本公开的一些实施例还可以被图示为包括处理器和存储器的系统。存储器可以与处理器通信并且包含程序指令,当由处理器执行时,所述程序指令被配置为使处理器执行上述方法。/>[0006]本公开的一些实施例还可以被图示为包括程序可读存储介质的计算机程序产品。计算机可读存储介质可以具有随其体现的计算机指令。这些程序指令可以由计算机执行以使计算机执行上述方法。
[0007]上述
技术实现思路
并非旨在描述本公开的每个所示实施例或每种实施方式。
附图说明
[0008]本申请中包括的附图并入说明书中并形成说明书的一部分。它们示出了本公开的实施例,并且与说明书一起用于解释本公开的原理。附图仅说明某些实施例,而不限制本公开。
[0009]图1描绘了根据本公开的实施例的使用位图执行三色标记的方法。
[0010]图2A描绘根据本专利技术的实施例的其中可执行三色标记的具有位图的存储器系统的初始抽象。
[0011]图2B描绘根据本专利技术实施例的其中可执行三色标记的具有位图的存储器系统的第二抽象。
[0012]图2C描绘根据本专利技术实施例的其中可执行三色标记的具有位图的存储器系统的第三抽象。
[0013]图3描绘了根据本公开的实施例的扫描可达对象的位图的方法。
[0014]图4描绘了可以根据实施例使用的计算机系统的代表性主要组件。
[0015]虽然本专利技术可以有各种修改和替换形式,但是其细节已经在附图中通过示例的方式示出并且将被详细描述。然而,应当理解,其目的不是将本专利技术限制于所描述的特定实施例。相反,本专利技术覆盖落入本专利技术的精神和范围内的所有修改、等效和替换。
具体实施方式
[0016]本公开的各方面涉及计算机系统中的垃圾收集,更具体的方面涉及标记不可到达的资源以用于垃圾收集。虽然本公开不一定限于此类应用,但是通过使用此上下文的各种示例的讨论可以理解本公开的各个方面。
[0017]典型的计算机系统在存储器中存储资源(这里也称为“对象”),因为在这些计算机系统上运行的进程(process)在开发或实时使用中需要这些资源。当请求资源的程序改变时,或者当程序的使用改变时,曾经对于程序的操作所必需的资源可能变得不必要。移除不必要地利用系统存储器的资源可使系统更快且更平稳地操作。为此,许多计算机系统结合了垃圾收集的形式,其被设计为从存储器中删除计算机系统不再需要的资源。然而,为了使垃圾收集方法有效地删除那些资源,必须标识不再必要的资源。
[0018]在一些计算机系统中,可以基于存储器中的任何其他资源是否引用那些不需要的资源来标识不需要的资源。例如,许多计算机系统使用“指针”来跟踪资源。如在此所使用的,“指针”指的是资源中标识另一资源并提供其位置的引用。指针由资源用来标识计算机系统在利用该第一资源时或之后可能需要使用的一个或多个资源。当存储器中的资源由资源中的指针标识时(该资源本身可被追溯回根资源(例如,在运行程序或进程时最初加载的对象)),该对象被称为“可达的”。这对其不为真的任何对象被称为是不可到达的。
[0019]存储器中不能到达的对象占用存储器空间,而不向计算机系统提供任何益处。因为它们是不可到达的,所以没有程序能够使用该对象。因此,从存储器中识别和移除不可达的资源是有益的。一些计算机系统利用垃圾收集来释放专用于不可达对象的存储器。垃圾收集通常包括分析对象之间的指针以确定可达对象的列表,随后删除未列出的对象。
[0020]例如,一些垃圾收集方法通过标识被称为系统或进程的根对象的对象而开始。如这里所使用的,根对象通常采取由系统在特定进程或程序中加载的第一对象的形式。根对象通常存储在存储器的结构化区段中,该区段提供计算机系统对根对象的快速且可靠的访问。它们可以例如在存储器堆栈或组织的存储器的其它部分中。这种快速和可靠的访问以及根对象是由进程的系统加载的基对象的事实使得根对象通过定义可达。
[0021]根对象通常包含指向在加载根对象之后执行进程所需的其它对象的指针。例如,进程的资源对象可以包括链接列表项,为了运行进程,需要按顺序使用这些链接列表项。在链接列表中,每个存储对象包含指向列表中下一个对象的位置的指针。因此,在列表的根,根对象将包含指向链表中的下一对象的指针。
[0022]如在此所使用的,包含指向第二对象的指针的第一对象(例如,根对象)在此被称为关于该第二对象的“父”或“父对象”。另一方面,第二对象被称为该父对象的“子”或“子对
象”。如果第二对象也包含指向第三对象的指针,则第二对象也被称为第三对象的父对象,而第三对象被称为第二对象的子对象。此外,第一对象被称为第三对象的“祖父”或“祖父对象”,而第三对象被称为第一对象的“孙”或“孙对象”。对象的“子对象、孙子对象等”在此可以统称为该对象的“后代”或“后代对象”。
[0023]在许多存储器系统中,虽然根对象被存储在存储器的高度组织的区段(例如,栈存储器)中,但后代对象通常被存储在存储器的较少组织的、较少管理的、自由浮动的区段(例如,堆存储器)中。这种无组织的存储器通常比有组织的存储器区段更大且更灵活,但是在其中定位对象而没有指引更困难。为此,指向对象的指针通常包含提供或允许计算该对象在该未组织的存储器区段中的地址的信息。换句话说,通过分析指向父对象内的子对象的指针,可确定该子对象的存储器位置。
[0024]然后,根对象的任何后代对象也可通过将根对象连接到该后代的指针系列到达。类似地,不是根对象的后代的任何对象是不可到达的。因此,许多垃圾收集系统通过标识根对象的后代来标识要从存储器中清除的对象。典型的垃圾收集系统可以例如通过标识根对象本文档来自技高网...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种方法,包括:识别第一存储器地址处的第一对象;计算位图中的第一索引位置,其中所述第一索引位置对应于所述第一存储器地址;在第一索引位置处设置第一位;检测指向所述第一对象内的子对象的指针;使用所述指针来识别所述子对象的第二存储器地址;计算位图中的第二索引位置,其中第二索引位置对应于第二存储器地址;在第二索引位置处设置第二位;以及在第三索引位置处设置第三位,其中所述第三索引位置与所述第一索引位置相邻。2.如权利要求1所述的方法,其中设置所述第一位表示所述第一对象已经被标记为“灰色”,并且其中设置所述第三位表示所述根对象已经被标记为“黑色”。3.根据权利要求1所述的方法,其进一步在设置所述第二位时确定设置所述第三位。4.根据权利要求3所述的方法,其中用与设置所述第二位相同的比较与交换指令设置所述第三位。5.根据权利要求3所述的方法,其中在设置所述第二位时确定设置所述第三位是基于检测到由所述第一对象指向的子对象数目低于阈值。6.如权利要求1所述的方法,其中在检测到所述第一对象的所有子对象已经被定位并且标记为“灰色”时,设置所述第三位。7.如权利要求1所述的方法,其中所述第三位在检测到所述父对象的子对象的阈值百分比已被标记为“灰色”时被设置。8.如权利要求1所述的方法,进一步包括确定所述第一对象的对象大小大于所述位图的对齐大小。9.根据权利要求1所述的方法,还包括:扫描第一索引位置;检测所述第一位被设置;基于检测到所述第一位被设置,断定所述第一存储器地址处的第一可达对象已被标记为“灰色”;扫描第三索引位置;检测所述第三位被设置;以及基于检测到所述第三位被设置,断定所述第一存储器地址处的所述第一可达对象已被标记为“黑色”。10.根据权利要求9所述的方法,还包括:扫描第二索引位置;检测所述第二位被设置;基于检测到所述第二位被设置,断定所述第二存储器地址处的第二可达对象已被标记为“灰色”;扫描第四索引位置,其中所述第四索引位置与所述第二索引位置相邻;检测所述第四索引位置处的第四位被设置;以及基于检测到所述第四位被设置,断定所述第二存储器地址处的所述第二可达对象尚未
被标记为“黑色”。11.一种系统,包括:处理器;以及与所述处理器通信的存储器,所述存储器包含程序指令,所述程序指令在由所述处理器执行时被配置为使所述处理器执行一种方法,所述方法包括:识别第一存储器地址处的第一对象;计算位图中的第一索引位置,其中所述第一索引位置对应于所述第一存储器地址;在第一索引位置处设置第一位;检测指向所述第一对象内的子对象的指针;使用所述指针来识别所述子对象的第二存储器地址;计算位图中的第二索引位置,其中第二索引位置对应于第二存储器地址;在第二索引位置处设置第二位;以及在第三索引位置处设置第三位,其中所述第三索引位置与所述第一索引位置相邻。12.根据权利要求11所述的系统,其中所述方法进一步包括...

【专利技术属性】
技术研发人员:伦大堀江绪方一则
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

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

1