CN109690485A - 基于数据结构的垃圾回收方法、计算机及存储介质 - Google Patents
基于数据结构的垃圾回收方法、计算机及存储介质 Download PDFInfo
- Publication number
- CN109690485A CN109690485A CN201880002423.3A CN201880002423A CN109690485A CN 109690485 A CN109690485 A CN 109690485A CN 201880002423 A CN201880002423 A CN 201880002423A CN 109690485 A CN109690485 A CN 109690485A
- Authority
- CN
- China
- Prior art keywords
- timeslice
- affairs
- data
- recycled
- transportable
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
- G06F9/467—Transactional memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02W—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO WASTEWATER TREATMENT OR WASTE MANAGEMENT
- Y02W90/00—Enabling technologies or technologies with a potential or indirect contribution to greenhouse gas [GHG] emissions mitigation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
- Refuse Collection And Transfer (AREA)
Abstract
本发明公开一种基于数据结构的垃圾回收方法,该垃圾回收方法利用时间片链表确定待回收数据对应的时间片,并获取时间片包含的全部活跃事务;进而将全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务迁移至时间片链表中的至少另一时间片中;从而可以对确定的满足预设回收条件的时间片的待回收数据进行回收。通过将满足预设迁移条件的活跃事务从待回收数据对应的时间片中迁移至时间片链表中的其他时间片中,进而对待回收数据进行回收,提高了垃圾回收的性能。
Description
技术领域
本发明涉及内存管理技术领域,尤其涉及基于数据结构的垃圾回收方法、计算机及存储介质。
背景技术
垃圾回收是数据结构内存管理的基本方式,现有的垃圾回收方法是基于时间片的垃圾回收方法。该方法的基本思想是在事务进行读写操作之前将自己加入到当前的时间片中,通常而言,这只需要增加相应时间片的引用计数。如果事务将一个内存数据M从索引中移除,它将指向该数据M的指针P放入垃圾回收列表。该时间片满足不为当前时间片,且该时间片的引用计数为零的条件时,该时间片的垃圾回收列表中的对象可以被回收。
目前的垃圾回收方法中,当前时间片(Current Epoch,CE)能够向前推移的条件是:活跃线程列表中的时间片都等于当前时间片。一般实现中只需维护三个时间片即可,令三个时间片分别为E-2,E-1与E。由于将时间片凑够E-1推进到E时,所有活跃线程要么处于时间片E-1中的关键区域,要么开始进入时间片E的关键区域,此时时间片E-2的对象则可回收。但若时间片E-2中存在滞后事务,则会导致时间片无法向前推进,导致时间片E-2的对象不能回收。
发明内容
本发明的目的在于提供一种基于数据结构的垃圾回收方法、计算机及存储介质,能够提高对垃圾数据的回收性能。
为实现上述目的,本发明提供一种基于数据结构的垃圾回收方法,该垃圾回收方法包括:
利用时间片链表确定待回收数据对应的时间片,并获取所述时间片包含的全部活跃事务;
将所述全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务;
将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中;
当确定迁移出所述可迁移事务后的所述时间片满足预设回收条件时,对所述待回收数据进行回收。
另一方面,本发明还提出了一种基于数据结构的垃圾回收方法,该垃圾回收方法包括:
获取当前的全部活跃事务;
从时间片链表中确定所述全部活跃事务分别对应的时间片,以及所述时间片对应的待回收数据;
将所述全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务;
将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中;
确定迁移出所述可迁移事务后的所述时间片满足预设回收条件,对所述待回收数据进行回收。
另一方面,本发明还提出了一种计算机,该计算机包括相互连接的存储器和处理器,其中:
所述存储器存储有用于实现上述的基于数据结构的垃圾回收方法的指令;
所述处理器执行所述存储器中的所述指令。
另一方面,本发明还提出了一种存储介质,该存储介质存储有程序数据,所述程序数据能够被执行以实现上述的基于数据结构的垃圾回收方法。
有益效果:区别于现有技术,本发明利用时间片链表确定待回收数据对应的时间片,并获取所述时间片包含的全部活跃事务;进而将所述全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务迁移至所述时间片链表中的至少另一时间片中;从而可以对确定的满足预设回收条件的时间片的待回收数据进行回收。通过将满足预设迁移条件的活跃事务从待回收数据对应的时间片中迁移至时间片链表中的其他时间片中,进而对待回收数据进行回收,缓解了时间片中已经没有正在使用的数据,但由于活跃事务的存在而不能被回收的情况。
附图说明
图1是本发明垃圾回收方法第一实施例的流程示意图;
图2是时间片链表的结构示意图;
图3是本发明垃圾回收方法第二实施例的流程示意图;
图4是本发明垃圾回收方法第三实施例的流程示意图;
图5是本发明垃圾回收方法第四实施例的流程示意图;
图6是本发明计算机实施例的结构示意图;
图7是本发明存储介质实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动情况下所获得的所有其他实施例,均属于本发明保护的范围。
需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本发明实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
请参阅图1,图1是本发明基于数据结构的垃圾回收方法第一实施例的流程示意图。如图1所示,本实施例的垃圾回收方法可包括如下步骤:
在步骤S11中,利用时间片链表确定待回收数据对应的时间片,并获取时间片包含的全部活跃事务。
时间片为逻辑时间,例如CPU的40ms为一个时间片,每个事务会被分配到当前的时间片,即事务开始时刻对应的时间片。事务进行读写操作之前会将自己加入到相应的时间片中,这简单地通过在相应时间片的计数器进行自增操作,表示事务加入该时间片。待回收数据(需要删除的数据)的指针被放入事务所在时间片,这些指针可以通过某种方式维护,例如链表。
本实施例中,根据固定周期建立新的时间片,即本实施每隔一固定时间间隔即创建一个新的时间片,则每个时间片根据其创建的时间具有先后顺序。本实施例中将多个时间片按其建立时间作为排序构成时间片链表,在时间片链表中建立时间最早的时间片即为位于链表头部的表头时间片。如图2所示,假设创建新的时间片为时间片104,在时间片104之前还具有之前建立的时间片101、时间片102和时间片103,其中,时间片101为最早建立的时间片,则时间片链表100由时间片101、时间片102、时间片103和时间片104构成,时间片101为表头时间片。需要说明的是,本实施例的时间片链表中指向新创建的时间片的方向为后方,指向之前创建的时间片的方向为前方,如图2所示。
由于指向待回收数据的指针被放入时间片中,因此可利用时间片链表确定时间片链表中每个时间片对应的待回收数据。本实施例中,活跃事务指时间片中未执行完而仍旧位于时间片中的滞后事务,可以理解的是,正是因为活跃事务仍旧在该时间片中,导致该时间片以及时间片对应的待回收数据无法被回收,进而使得时间片无法向前推进,影响了运行性能。
在步骤S12中,将全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务。
进一步,在获取的全部活跃事务中筛选满足预设迁移条件的活跃事务,将筛选出的活跃事务作为可迁移事务,进而继续执行后续步骤。
本实施例中,预设迁移条件可以为活跃事务的数据读写集与待回收数据集的交集为空集。其中,活跃事务的数据读写集由活跃事务在后续的执行中所需要读取的数据构成,待回收数据集由步骤S11中确定的待回收数据构成。
若待回收数据集与活跃事务的数据读写集的交集不为空集,则说明执行活跃事务进行读写操作时仍需要读取该时间片对应的待回收数据,因此这些待回收数据不可被回收;若待回收数据集与活跃事务的数据读写集的交集为空集,则说明后续执行活跃事务时也不再需要读取这些待回收数据,因此这些待回收数据可以回收,但由于时间片中活跃事务的存在,导致这些待回收数据不能被回收,此时活跃事务即可作为可迁移事务。
例如,图2中所示的事务t0为时间片101中的活跃事务,事务t0的数据读写集为{P5,P6},而时间片101中对应的待回收数据集为{P1,P2,P7}(在其他实施方式中,可将当前时间片之前的时间片内的所有待回收数据构成待回收数据集,即待回收数据集为{P1,P2,P7,P3,P9,P8}),事务t0的数据读写集与时间片101的待回收数据集的交集则为空集,此时,时间片101中的待回收数据P1,P2,P7可以被回收,则事务t0则作为可迁移事务,同理,时间片102中的事务t2的数据读写集为{P10},事务t2也作为可迁移事务,而时间片102中的事务t1的数据读写集为{P3},事务t1不可作为可迁移事务。
在步骤S13中,将可迁移事务迁移至时间片链表中的至少另一时间片中。
在步骤S12中确定了可迁移事务后,将可迁移事务从待回收数据对应的时间片中迁移到时间片链表中的至少另一时间片中,则可在后续步骤中对待回收数据对应的时间片中的待回收数据进行回收。
进一步,本实施例中迁移可迁移事务时,是将可迁移事务从待回收数据对应的时间片迁移至时间片链表中位于该时间片之前的相邻时间片中,而不出现跃迁。如图2所示,时间片101中的事务t0作为可迁移事务,可从时间片101迁移至时间片102,而不能直接迁移至103;时间片102中的事务t2可作为可迁移事务,则事务t2可从时间片102迁移至时间片103,而不能迁移至时间片104,也不能向后迁移至时间片101。
本实施例的迁移方式可避免在对待回收数据进行回收时出现错误回收,例如,若将事务t0从时间片101迁移至时间片103中,而时间片102中又包含有事务t0正在引用的数据,此时,在对时间片102进行回收时,由于事务t0在时间片103内,那么系统可能会对时间片102对应的待回收数据进行处理,导致后续对事物t0进行读写时出现错误。
本实施例的每个时间片均设置有引用计数器,用于记录相应时间片内的事务的个数。引用计数是计算机编程语言中的一种内存管理技术,是指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。使用引用计数技术可以实现自动资源管理的目的。同时引用计数还可以指使用引用计数技术回收未使用资源的垃圾回收算法。
本实施例在将可迁移事务从待回收数据对应的时间片中迁移出去后,待回收数据对应的时间片的引用计数则相应减去可迁移事务的数量,相应的,被迁入可迁移事务的时间片的引用计数相应的增加。进一步参阅图2,时间片101中的存在事务t0,即时间片101中的事务的个数为1,时间片101的引用计数为1,当事务t0作为可迁移事务被迁移后,时间片101的引用计数则相应的减去1,此时时间片101的引用计数为0,进一步,事务t0迁入的时间片为时间片102,则时间片102的引用计数对应加1。由此可以理解,仅当某一时间片内没有事务存在时,其引用计数才会为零。
在步骤S14中,确定迁移出可迁移事务后的时间片满足预设回收条件,将待回收数据进行回收。
通过将可迁移事务从待回收数据对应的时间片中迁移出之后,即可对相应的待回收数据进行回收。需要注意的是,本实施例中,当待回收数据对应的时间片中的全部活跃事务均迁移出该时间片时,才能对待回收时间片内的待回收数据进行回收。例如,假设图2中时间片102中的事务t2可作为可迁移事务,但时间片102中仍然还有活跃事务t1存在,则同样不能对时间片102的待回收数据进行回收,仅当事务t1和事务t2均从时间片102中迁移后,且没有其他事务迁入时间片102的情况下,才能对时间片102中待回收数据进行回收。
进一步,由于引用计数的引入,确定迁移出可迁移事务后的时间片满足预设回收条件可以为确定迁移出可迁移事务后的时间片的引用计数为零。
本实施例通过将满足预设迁移条件的活跃事务从待回收数据对应的时间片中迁移至时间片链表中的其他时间片中,进而对待回收数据进行回收,缓解了时间片中已经没有待回收的数据被使用的情况,但由于活跃事务的存在而不能被回收的情况。进一步,本实施例的垃圾回收方法不需要扫描活跃进程列表,可提高垃圾回收性能。
进一步,请参阅图3,图3是本发明基于数据结构的垃圾回收方法第二实施例的流程示意图。如图3所示,本实施例的垃圾回收方法可包括如下步骤:
在步骤S21中,根据时间片链表查找位于链表头部的表头时间片,确定表头时间片不为当前时间片,则将表头时间片作为待回收数据对应的时间片,获取待回收数据对应的时间片包含的全部活跃事务。
本实施例中的时间片链表与步骤S11中的时间片链表相同,此处不再赘述。本实施例中,通过时间片链表直接查找位于链表头部的表头时间片,进一步确定表头时间片不为当前时间片,则确定表头时间片为待回收数据对应的时间片,表头时间片内的指针指向的数据即为待回收数据。进一步,获取表头时间片内包含的全部活跃事务。
如图2所示,时间片链表100中时间片101为表头时间片,当前时间片为104,则可确定表头时间片不为当前时间片,则时间片101即为待回收数据对应的时间片,相应的,时间片101内仅包含事务t0,则事务t0为其对应的活跃事务,由时间片101中的指针指向的数据P1、P2、P7为待回收数据。
在步骤S22中,将全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务。
进一步,在步骤S21中获取的全部活跃事务中筛选满足预设迁移条件的活跃事务,将筛选出的活跃事务作为可迁移事务,进而继续执行后续步骤。
本实施例中,预设迁移条件可以为活跃事务的数据读写集与待回收数据集的交集为空集。其中,活跃事务的数据读写集由活跃事务在后续的执行中所需要读取的数据构成,待回收数据集由步骤S21中确定的待回收数据构成。若待回收数据集与活跃事务的数据读写集的交集不为空集,则说明后续对活跃事务进行读写操作时仍需要读取该时间片内的待回收数据,则这些待回收数据不可被回收;若待回收数据集与活跃事务的数据读写集的交集为空集,则说明后续对活跃事务进行读写操作时也不再需要这些待回收数据,是可以回收的,但由于时间片中活跃事务的存在,导致这些待回收数据不能被回收,此时活跃事务即可作为可迁移事务。
如图2所示,确定的待回收数据对应的时间片为时间片101,事务t0为时间片101中的活跃事务,事务t0的数据读写集为{P5,P6},而时间片101中的待回收数据集为{P1,P2,P7},事务t0的数据读写集与时间片101中的待回收数据集的交集则为空集,此时,时间片101对应的待回收数据P1,P2,P7可以被回收,则事务t0则作为可迁移事务。
在步骤S23中,将可迁移事务迁移至时间片链表中的至少另一时间片中。
本实施例中迁移可迁移事务时,是将可迁移事务从待回收数据对应的时间片迁移至时间片链表中位于该时间片之前的相邻时间片中,而不出现跃迁。如图2所示,时间片101中的事务t0作为可迁移事务,可从时间片101迁移至时间片102,而不能直接迁移至103。
在步骤S24中,将待回收数据对应的时间片的第一引用计数减去可迁移事务的数量,得到迁移出可迁移事务后的待回收数据对应的时间片的第二引用计数。
本实施例的每个时间片均设置有引用计数器,用于记录相应时间片内的事务的个数。引用计数是计算机编程语言中的一种内存管理技术,是指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。使用引用计数技术可以实现自动资源管理的目的。同时引用计数还可以指使用引用计数技术回收未使用资源的垃圾回收算法。
本实施例在将可迁移事务从待回收数据对应的时间片中迁移出去后,待回收数据对应的时间片的引用计数则减去相应可迁移事务的数量,相应的,被迁入可迁移事务的时间片的引用计数相应的增加。本实施例中,令可迁移事务迁出待回收数据所在时间片之前,该时间片的引用计数为第一引用计数,可迁移事务迁出待回收数据所在时间片之后,该时间片的引用计数为第二引用计数,则将可迁移事务迁出后,将第一引用计数减去迁出的可迁移事务的数量,即可得到第二引用计数。
进一步参阅图2,事务t0作为时间片101中的可迁移事务,事务t0迁出前时间片101的第一引用计数为1,当事务t0迁出后时间片101的引用计数减1,则其第二引用计数为0。
在步骤S25中,确定迁移出可迁移事务后的时间片的第二引用计数为零,将待回收数据进行回收。
本实施例引用了引用计数,且确定了待回收数据对应的时间片为表头时间片,则可直接判断待回收数据对应的时间片的引用计数是否为0,若是,则对待回收数据进行回收。参考图2,本实施例中确定了表头时间即时间片101,当时间片101的引用计数为0时,则对时间片101中的待回收数据进行回收。
相应的,可迁移事务迁入时间片链表中的其他时间片,则迁入了可迁移事务的时间片的引用计数需要相应的加上迁入的可迁移事务的数量。例如,事务t0迁入的时间片为时间片102,则时间片102的引用计数对应加1。
进一步,本实施例对表头时间片中的待回收数据进行回收后,该表头时间片也会被相应移除,时间片链表则会相应的更新,对应的时间片链表的表头时间片也会向前推进。举例说明,当图2中表头时间片101随着事务t0的迁移而被回收,则表头时间片向前推进,图2中的时间片102则作为推进后的表头时间片,此时,重复本实施例的上述步骤S21至步骤S25对位于链表表头的时间片102进行回收。
进一步,请参阅图4,图4是本发明基于数据结构的垃圾回收方法第三实施例的流程示意图。如图4所示,本实施例的垃圾回收方法可包括如下步骤:
在步骤S31中,根据时间片链表确定当前时间片,将时间片链表中位于当前时间片之后的全部时间片分别作为多个待回收数据对应的时间片。
本实施例中根据时间片链表确定与系统时间对应的当前时间片,即当前正在执行的时间片,可以理解的是,在时间片链表中位于当前时间片之前的时间片则是已经执行过而未被回收的时间片,在这些未被回收的时间片内的指针指向的数据即为待回收数据。
举例说明,如图2所示,时间片104为当前时间片,则在时间片链表100中,位于时间片104之前的时间片101、时间片102和时间片103均分别为待回收数据对应的时间片,时间片101、时间片102和时间片103内的指针指向的数据均为待回收数据。
在步骤S32中,分别获取多个待回收数据对应的时间片各自包含的全部活跃事务。
进一步,由步骤S31中确定的待回收数据对应的时间片,得到各个时间片各自包含的全部活跃事务,本实施例中,活跃事务与其所在时间片也是相对应的。如图2所示,即根据时间片101、时间片102和时间片103分别获取时间片101的活跃事务t0,时间片102的活跃事务t1和活跃事务t2,时间片103的活跃事务t3。
在步骤S33中,从多个待回收数据对应的时间片各自包含的全部活跃事务中,分别筛选满足预设迁移条件的活跃事务,将筛选出的活跃事务作为相应时间片各自的可迁移事务。
本实施例中,预设迁移条件可以为活跃事务的数据读写集与待回收数据集的交集为空集。其中,活跃事务的数据读写集由活跃事务在执行中所需要读取的数据构成,待回收数据集由步骤S31中确定的待回收数据构成。
进一步,本实施例得到多个待回收数据对应的时间片,活跃事务又分别与待回收数据对应的时间片对应,其中,筛选满足预设迁移条件的活跃事务也为从每个时间片的全部活跃事务中筛选满足预设迁移条件的活跃事务。
进一步参阅图2,根据时间片101中的活跃事务t0、时间片102中的活跃事务t1和活跃事务t2、以及时间片103中的活跃事务t3,可得到相应的数据读写集{P5,P6},{P3},{P10},{P8},待回收数据集则为{P1,P2,P7,P3,P9,P8},进而根据与活跃事务t0,活跃事务t1,活跃事务t2和活跃事务t3分别对应的数据读写集和上述的待回收数据集筛选出两者的交集为空集的活跃事务t0和活跃事务t2,则活跃事务t0和活跃事务t2即可作为可迁移事务。
在步骤S34中,将相应时间片各自的可迁移事务分别迁移至时间片链表中的至少另一时间片中。
本实施例中迁移可迁移事务时,是将可迁移事务从待回收数据对应的时间片迁移至时间片链表中位于该时间片之前的相邻时间片中,而不出现跃迁。如图2所示,时间片101中的事务t0作为可迁移事务,从时间片101迁移至时间片102;时间片102中的事务t2可作为可迁移事务,从时间片102迁移至时间片103。
在步骤S35中,将相应时间片的第三引用计数分别减去相应时间片各自的可迁移事务的数量,分别得到迁移出各自的可迁移事务后的相应时间片的第四引用计数。
本实施例在将可迁移事务从待回收数据对应的时间片中迁移出去后,待回收数据对应的时间片的引用计数则减去相应可迁移事务的数量,相应的,被迁入可迁移事务的时间片的引用计数相应的增加。本实施例中,令可迁移事务迁出待回收数据对应的时间片之前,该时间片的引用计数为第三引用计数,可迁移事务迁出待回收数据对应的时间片之后,该时间片的引用计数为第四引用计数,则将可迁移事务迁出后,将第三引用计数减去迁出的可迁移事务的数量,即可得到第四引用计数。进一步,可迁移事务迁入相邻时间片之前,该相邻时间片的引用计数为第五引用计数,可迁移事务迁入相邻时间片之后,该时间片的引用计数为第六引用计数,则将可迁移事务迁入后,将第五引用计数加上迁入的可迁移事务的数量,即可得到第六引用计数。
进一步参阅图2,活跃事务t0作为时间片101中的可迁移事务,活跃事务t0迁出前时间片101的引用计数为1,当活跃事务t0迁出后时间片101的引用计数减1,则其引用计数为0。对于时间片102,在活跃事务t0未迁入,而活跃事务t1和活跃事务t2未迁出时,其引用计数为2,当活跃事务t2迁出后,其引用计数减1,但活跃事务t0迁入时间片102中后,其引用计数又再加1,此时时间片102的引用计数仍为2;时间片103中的活跃事务t3不能迁移,而活跃事务t2从时间片102中迁移至时间片103中,因此,时间片103的引用计数加1。
在步骤S36中,确定迁移出可迁移事务后的时间片的第四引用计数为零,且位于时间链表的链表头部,对待回收数据进行回收。
进一步,在时间片101、时间片102和时间片103中迁移了可迁移事务后的引用计数是否为零,且位于时间片链表100的链表头部的时间片101,则对时间片101内的指针指向的待回收数据进行回收。进一步,将时间片101从时间片链表100中清除,得到新的时间片链表,在新的时间片链表中,位于链表的链表头部的时间片为时间片102。
进一步,根据新的时间片链表重复执行本实施例的上述步骤,继续对时间片链表中的待回收数据进行回收。
进一步,请参阅图5,图5是本发明基于数据结构的垃圾回收方法第四实施例的流程示意图。如图5所示,本实施例的垃圾回收方法可包括如下步骤:
在步骤S41中,获取当前的全部活跃事务。
本实施例中根据当前的系统时间确定当前时间片,进而获取当前的全部活跃事务。
举例说明,如图2所示,时间片104为当前时间片,则在时间片104之后仍然存在的事务即为活跃事务。如图2中的事务t0,事务t1,事务t2和事务t3。
在步骤S42中,从时间片链表中确定所述全部活跃事务分别对应的时间片,以及所述时间片对应的待回收数据。
进一步,在时间片链表100中即可确定活跃事务t0,t1,t2和t3,此外,还可以确定活跃事务t0,t1,t2和t3分别对应的时间片101,时间片102和时间片103,进而可以得到时间片101,时间片102和时间片103内的指针指向的待回收数据,进而继续执行后续步骤。
在步骤S43中,将全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务。
在步骤S44中,将可迁移事务迁移至时间片链表中的至少另一时间片中。
在步骤S45中,确定迁移出可迁移事务后的时间片满足预设回收条件,对待回收数据进行回收。
本实施例中步骤S43至步骤S45可参照图1至图4所示的垃圾回收方法第一实施例至第三实施例,此处不再赘述。
进一步,参阅图6,图6是本发明计算机实施例的结构示意图。如图6所示,本实施例的计算机200包括相互连接的处理器201和存储器202,可以是总线连接或其他方式的连接,其中,存储器202存储有用于实现图1至图5所示的垃圾回收方法第一实施例至第四实施例中任意一个实施例或几个实施例的指令;处理器201执行存储器202存储的上述指令,以实现图1至图5所示的垃圾回收方法第一实施例至第四实施例中任意一个实施例或几个实施例。
具体执行的内容与图1至图5所示的垃圾回收方法第一实施例至第四实施例的内容相同,详情请参见上述对垃圾回收方法第一实施例至第四实施例的说明,此处不再赘述。
请参阅图7,图7是本发明存储介质实施例的结构示意图。如图7所示,本实施例中的存储介质300中存储有能够被执行的程序数据301,该程序数据301被执行能够实现图1至图5所示的垃圾回收方法第一实施例至第四实施例中任意一个实施例或几个实施例。
本实施例中,该存储介质300可以是智能终端的存储模块、移动存储装置(如移动硬盘、U盘等)、网络云盘、应用存储平台或服务器等具备存储功能的介质。此外,该存储介质300还可以为上述图6中所示的存储器202。
以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围。
Claims (18)
1.一种基于数据结构的垃圾回收方法,其特征在于,包括:
利用时间片链表确定待回收数据对应的时间片,并获取所述时间片包含的全部活跃事务;
将所述全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务;
将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中;
当确定迁移出所述可迁移事务后的所述时间片满足预设回收条件时,对所述待回收数据进行回收。
2.根据权利要求1所述的垃圾回收方法,其特征在于,所述利用时间片链表确定待回收数据对应的时间片的步骤,包括:
根据所述时间片链表查找位于链表头部的表头时间片,确定所述表头时间片不为当前时间片,则将所述表头时间片作为所述待回收数据对应的时间片。
3.根据权利要求1所述的垃圾回收方法,其特征在于,所述利用时间片链表确定待回收数据对应的时间片,并获取所述时间片包含的全部活跃事务的步骤,包括:
根据所述时间片链表确定当前时间片,将所述时间片链表中位于所述当前时间片之后的全部时间片分别作为多个待回收数据对应的时间片;
分别获取所述多个待回收数据对应的时间片各自包含的全部活跃事务。
4.根据权利要求3所述的垃圾回收方法,其特征在于,所述将所述全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务的步骤,包括:
从所述多个待回收数据对应的时间片各自包含的全部活跃事务中,分别筛选满足预设迁移条件的活跃事务,将筛选出的活跃事务作为相应所述时间片各自的可迁移事务;
所述将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中的步骤,包括:
将相应所述时间片各自的可迁移事务分别迁移至所述时间片链表中的至少另一时间片中。
5.根据权利要求2所述的垃圾回收方法,其特征在于,在所述将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中之后,还包括:
将所述待回收数据对应的时间片的第一引用计数减去所述可迁移事务的数量,得到迁移出所述可迁移事务后的所述待回收数据对应的时间片的第二引用计数;
所述预设回收条件,包括:所述第二引用计数为零。
6.根据权利要求3所述的垃圾回收方法,其特征在于,在所述将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中之后,还包括:
将相应所述时间片的第三引用计数分别减去相应所述时间片各自的可迁移事务的数量,分别得到迁移出各自的可迁移事务后的相应所述时间片的第四引用计数;
所述预设回收条件包括:
所述第四引用计数为零,且位于所述时间链表的链表头部。
7.根据权利要求1-6任意一项所述的垃圾回收方法,其特征在于,所述预设迁移条件,包括:
所述活跃事务的数据读写集与待回收数据集的交集为空集。
8.根据权利要求1所述的垃圾回收方法,其特征在于,所述将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中的步骤,包括:
将所述可迁移事务迁移至位于所述时间片链表中位于所述待回收数据对应的时间片之前的相邻时间片中。
9.根据权利要求1所述的垃圾回收方法,其特征在于,在所述将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中之后,还包括:
将迁入所述可迁移事务的所述至少另一时间片的第五引用计数加上迁入的可迁移事务的数量,得到相应的第六引用计数。
10.根据权利要求1所述的垃圾回收方法,其特征在于,所述将所述待回收数据进行回收的步骤,包括:
将所述待回收数据作为垃圾数据,对所述垃圾数据进行回收;并从所述时间片链表中清除所述待回收数据对应的时间片。
11.根据权利要求1所述的垃圾回收方法,其特征在于,所述时间片链表为根据固定时间周期建立的时间片按建立时间顺序组成的链表;
所述时间片链表中的位于链表头部的时间片为:所述时间片链表中的建立时间最早的时间片。
12.一种基于数据结构的垃圾回收方法,其特征在于,包括:
获取当前的全部活跃事务;
从时间片链表中确定所述全部活跃事务分别对应的时间片,以及所述时间片对应的待回收数据;
将所述全部活跃事务中满足预设迁移条件的活跃事务作为可迁移事务;
将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中;
确定迁移出所述可迁移事务后的所述时间片满足预设回收条件,将所述待回收数据进行回收。
13.根据权利要求12所述的垃圾回收方法,其特征在于,所述从时间片链表中确定所述全部活跃事务分别对应的时间片,以及所述时间片对应的待回收数据的步骤,包括:
从所述时间片链表中确定所述全部活跃事务对应的位于所述链表头部,且不为当前时间片的表头时间片;获取与所述表头时间片对应的待回收数据。
14.根据权利要求13所述的垃圾回收方法,其特征在于,在所述将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中之后,还包括:
将所述表头时间片的第一引用计数减去所述可迁移事务的数量,得到迁移出所述可迁移事务后的所述表头时间片的第二引用计数;
所述预设回收条件,包括:所述第二引用计数为零。
15.根据权利要求13或14任意一项所述的垃圾回收方法,其特征在于,所述预设迁移条件,包括:
所述活跃事务的数据读写集与待回收数据集的交集为空集。
16.根据权利要求13所述的垃圾回收方法,其特征在于,所述将所述可迁移事务迁移至所述时间片链表中的至少另一时间片中的步骤,包括:
将所述可迁移事务迁移至位于所述时间片链表中位于所述时间片之后的相邻时间片中。
17.一种计算机,其特征在于,包括相互连接的处理器和存储器;
所述存储器中存储有用于实现权利要求1-11或权利要求12-16任意一项所述的垃圾回收方法的程序数据;
所述处理器用于执行所述程序数据。
18.一种存储介质,其特征在于,存储有程序数据,所述程序数据能够被执行以实现如权利要求1-11或权利要求12-16任意一项所述的基于数据结构的垃圾回收方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/102350 WO2020037686A1 (zh) | 2018-08-24 | 2018-08-24 | 基于数据结构的垃圾回收方法、计算机及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109690485A true CN109690485A (zh) | 2019-04-26 |
CN109690485B CN109690485B (zh) | 2023-08-18 |
Family
ID=66191859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880002423.3A Active CN109690485B (zh) | 2018-08-24 | 2018-08-24 | 基于数据结构的垃圾回收方法、计算机及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109690485B (zh) |
WO (1) | WO2020037686A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021093626A1 (zh) * | 2019-11-15 | 2021-05-20 | 荣耀终端有限公司 | 一种内存的管理方法及电子设备 |
CN113032292A (zh) * | 2021-05-19 | 2021-06-25 | 北京金山云网络技术有限公司 | 存储空间回收方法、数据读取方法及装置 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003050740A (ja) * | 2001-05-29 | 2003-02-21 | Matsushita Electric Ind Co Ltd | ガベージコレクション装置及びガベージコレクション方法 |
CN101046755A (zh) * | 2006-03-28 | 2007-10-03 | 郭明南 | 一种计算机自动内存管理的系统及方法 |
US20090271435A1 (en) * | 2008-04-24 | 2009-10-29 | Katsushi Yako | Data management method, data management program, and data management device |
US20130097369A1 (en) * | 2010-12-13 | 2013-04-18 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory management |
CN104243587A (zh) * | 2014-09-18 | 2014-12-24 | 苏州阔地网络科技有限公司 | 一种消息服务器负载均衡方法及系统 |
CN104348862A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 数据迁移处理方法、装置及系统 |
CN104391661A (zh) * | 2014-12-12 | 2015-03-04 | 西安三星电子研究有限公司 | 向固态硬盘写入数据的方法及设备 |
CN104915362A (zh) * | 2014-07-19 | 2015-09-16 | 国家电网公司 | 一种基于时间片、增量分析及随机打乱技术的快速智能化erp系统数据迁移方案 |
CN105183400A (zh) * | 2015-10-23 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于内容寻址的对象存储方法和系统 |
CN106201904A (zh) * | 2016-06-30 | 2016-12-07 | 网易(杭州)网络有限公司 | 用于内存垃圾回收的方法及装置 |
CN106648882A (zh) * | 2015-11-04 | 2017-05-10 | 龙芯中科技术有限公司 | 基于虚拟机的垃圾回收方法及装置 |
CN106775496A (zh) * | 2013-10-23 | 2017-05-31 | 华为技术有限公司 | 一种存储数据处理方法及装置 |
CN107315763A (zh) * | 2017-04-26 | 2017-11-03 | 杭州沃趣科技股份有限公司 | 一种针对Oracle数据库跨平台数据迁移方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405670B2 (en) * | 2011-06-09 | 2016-08-02 | Tsinghua University | Wear leveling method and apparatus |
CN104035879A (zh) * | 2014-06-04 | 2014-09-10 | 江南大学 | 一种基于生命期预测的内存分配和垃圾收集方法 |
CN107797772A (zh) * | 2017-11-27 | 2018-03-13 | 郑州云海信息技术有限公司 | 一种基于闪存介质的垃圾回收系统及方法 |
-
2018
- 2018-08-24 CN CN201880002423.3A patent/CN109690485B/zh active Active
- 2018-08-24 WO PCT/CN2018/102350 patent/WO2020037686A1/zh active Application Filing
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003050740A (ja) * | 2001-05-29 | 2003-02-21 | Matsushita Electric Ind Co Ltd | ガベージコレクション装置及びガベージコレクション方法 |
CN101046755A (zh) * | 2006-03-28 | 2007-10-03 | 郭明南 | 一种计算机自动内存管理的系统及方法 |
US20090271435A1 (en) * | 2008-04-24 | 2009-10-29 | Katsushi Yako | Data management method, data management program, and data management device |
US20130097369A1 (en) * | 2010-12-13 | 2013-04-18 | Fusion-Io, Inc. | Apparatus, system, and method for auto-commit memory management |
CN104348862A (zh) * | 2013-07-31 | 2015-02-11 | 华为技术有限公司 | 数据迁移处理方法、装置及系统 |
CN106775496A (zh) * | 2013-10-23 | 2017-05-31 | 华为技术有限公司 | 一种存储数据处理方法及装置 |
CN104915362A (zh) * | 2014-07-19 | 2015-09-16 | 国家电网公司 | 一种基于时间片、增量分析及随机打乱技术的快速智能化erp系统数据迁移方案 |
CN104243587A (zh) * | 2014-09-18 | 2014-12-24 | 苏州阔地网络科技有限公司 | 一种消息服务器负载均衡方法及系统 |
CN104391661A (zh) * | 2014-12-12 | 2015-03-04 | 西安三星电子研究有限公司 | 向固态硬盘写入数据的方法及设备 |
CN105183400A (zh) * | 2015-10-23 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种基于内容寻址的对象存储方法和系统 |
CN106648882A (zh) * | 2015-11-04 | 2017-05-10 | 龙芯中科技术有限公司 | 基于虚拟机的垃圾回收方法及装置 |
CN106201904A (zh) * | 2016-06-30 | 2016-12-07 | 网易(杭州)网络有限公司 | 用于内存垃圾回收的方法及装置 |
CN107315763A (zh) * | 2017-04-26 | 2017-11-03 | 杭州沃趣科技股份有限公司 | 一种针对Oracle数据库跨平台数据迁移方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021093626A1 (zh) * | 2019-11-15 | 2021-05-20 | 荣耀终端有限公司 | 一种内存的管理方法及电子设备 |
CN113032292A (zh) * | 2021-05-19 | 2021-06-25 | 北京金山云网络技术有限公司 | 存储空间回收方法、数据读取方法及装置 |
CN113032292B (zh) * | 2021-05-19 | 2021-09-03 | 北京金山云网络技术有限公司 | 存储空间回收方法、数据读取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2020037686A1 (zh) | 2020-02-27 |
CN109690485B (zh) | 2023-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8995070B2 (en) | Garbage collection based on functional block size | |
US6317756B1 (en) | On-the-fly garbage collector | |
US6865585B1 (en) | Method and system for multiprocessor garbage collection | |
KR20010025112A (ko) | 메모리 재사용 방법 | |
CN109308213B (zh) | 基于改进任务调度机制的多任务断点调试方法 | |
CN103197969A (zh) | 一种分布式定时任务控制装置及方法 | |
CN105069134A (zh) | 一种Oracle统计信息自动收集方法 | |
CN106469120A (zh) | 碎片整理方法、装置及设备 | |
CN109690485A (zh) | 基于数据结构的垃圾回收方法、计算机及存储介质 | |
CN103019805A (zh) | 一种多线程环境下定时器的设置方法 | |
CN103678337A (zh) | 数据清除方法、装置及系统 | |
CN110457033A (zh) | 用于在gpu上生成动态踪迹数据的装置和方法 | |
CN104035786A (zh) | 一种软件定时器的优化方法及系统 | |
DE112019001821T5 (de) | Verfahren und vorrichtung zur wiedergabe eines aktivierungsrahmens für unterbrechungsfreie speicherbereinigung (pause-less garbage collection) | |
US20100199058A1 (en) | Data Set Size Tracking and Management | |
CN106055404A (zh) | 一种清理后台应用程序的方法和装置 | |
Bender et al. | Cost-oblivious storage reallocation | |
CN109189739B (zh) | 缓存空间回收方法和装置 | |
CN110427259A (zh) | 一种任务处理方法及装置 | |
CN108628678B (zh) | 内存参数的确定方法、装置及设备 | |
CN108829345A (zh) | 日志文件的数据处理方法和终端设备 | |
CN102436535B (zh) | 计算机辅助设计过程中创意拐点的识别方法及系统 | |
CN103645967A (zh) | 一种只读快照回滚方法及装置 | |
CN114661624A (zh) | 一种数据高效采集存储方法、系统、设备和存储介质 | |
US6324550B1 (en) | Data object identification and removal system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |