CN103425729B - 用于管理计算机系统中内存的方法和装置 - Google Patents

用于管理计算机系统中内存的方法和装置 Download PDF

Info

Publication number
CN103425729B
CN103425729B CN201310178857.8A CN201310178857A CN103425729B CN 103425729 B CN103425729 B CN 103425729B CN 201310178857 A CN201310178857 A CN 201310178857A CN 103425729 B CN103425729 B CN 103425729B
Authority
CN
China
Prior art keywords
diagram
metadata
releasing
quoted
internal memory
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.)
Active
Application number
CN201310178857.8A
Other languages
English (en)
Other versions
CN103425729A (zh
Inventor
E.J.斯莱特里
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103425729A publication Critical patent/CN103425729A/zh
Application granted granted Critical
Publication of CN103425729B publication Critical patent/CN103425729B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • 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
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了一种用于管理计算机系统中内存的方法和装置,在该计算机系统中保存与解除引用的内存对象有关的元数据用于随后的检索。

Description

用于管理计算机系统中内存的方法和装置
技术领域
本发明涉及管理计算机系统中的内存。
背景技术
计算机系统一般使用虚拟内存管理系统。虚拟内存管理系统使用动态的内存分配处理和垃圾回收(collection)处理从而分别分配和收回(reclaim)内存分配。垃圾回收处理被安排为标识已分配但无法使用的内存分配,清除其存储的相关联的内存对象,并且返回标识的内存分配用于通过重分配来再次使用(reuse)。
垃圾回收处理要求大量的处理能力且可延迟计算机的其它处理。可以提高应用程序的内存效率,以便产生更少的被丢弃的内存对象让垃圾回收处理清除。然而,在运行在给定计算机上的多个系统或应用程序的情况下,标识被丢弃的内存对象的源是困难和耗时的。
发明内容
本发明的实施例提供了一种用于管理计算机系统中内存的方法,其中在任何给定时间使用的内存位置被表示为第一对象图中的内存对象集,所述第一对象图包括通过对每个所述内存对象的引用而关联的系统根对象,所述方法包括下述步骤:创建用于所述内存的第二根对象,以便形成用于所述内存的第二对象图;以及响应于从所述第一对象图解除引用(dereference)第一对象,将所述解除引用的第一对象与所述第二对象图关联,以便所述第二对象图包括一个或多个解除引用的对象。
该方法可包括下述步骤:标识所述第一对象图中的第二对象,该第二对象紧挨所述第一对象的解除引用之前引用了所述第一对象;以及创建从所述第二对象图到所述第二对象的引用,以便将所述第二对象图中的所述第一对象与所述第一对象图中的所述第二对象关联。该方法可包括下述步骤:在所述第二对象图中创建第一元数据对象,所述第一元数据对象被安排为提供从所述第二对象图到所述第一对象图中的所述第二对象的所述引用,以及被安排为引用所述第二对象图中的所述第一对象。该方法可包括下述步骤:标识用于所述第一对象的预定的元数据,该预定的元数据用于标识紧挨所述解除引用之前所述第一对象图中所述第一对象的位置;以及将所述元数据与所述第一对象关联地存储在所述第二对象图中。
所述元数据可存储在与所述第二对象图中所述第一对象关联的第二元数据对象中。所述元数据可包括标识所述第二对象中的字段的数据,该字段用于紧挨所述第一对象的所述解除引用之前从所述第二对象引用所述第一对象。
该方法可包括下述步骤:响应于在其中标识包括存在于所述第一对象图中的所有对象的第一对象集的垃圾回收的第一阶段,标识包括存在于所述第二对象图中且不存在于所述第一对象图中的对象的第二对象集;以及在其中从所述内存删除所述第二对象集的垃圾回收的任何进一步的阶段之前,保存与所述第二对象集中的所述对象的每个关联的预定数据。
所述预定数据可包括标识所述第一对象的数据。所述预定数据可包括标识所述第二对象的数据,所述第二对象紧挨所述第一对象的解除引用之前引用了所述第一对象。所述预定数据可包括标识所述第二对象中的字段的数据,该字段紧挨所述解除引用之前引用了所述第一对象图中的第一对象。
另一实施例提供了一种用于管理计算机系统中内存的装置,其中在任何给定时间使用的内存位置被表示为第一对象图中的内存对象集,所述第一对象图包括通过对每个所述内存对象的引用而关联的系统根对象,所述装置可操作从而:创建用于所述内存的第二根对象,以便形成用于所述内存的第二对象图;以及响应于从所述第一对象图解除引用第一对象,将所述解除引用的第一对象与所述第二对象图关联,以便所述第二对象图包括一个或多个解除引用的对象。
又一实施例提供了一种用于管理计算机系统中内存的计算机程序,其中在任何给定时间使用的内存位置被表示为第一对象图中的内存对象集,所述第一对象图包括通过引用到每个所述内存对象而关联的系统根对象,所述计算机程序产品包括具有具体化为计算机可读程序代码的计算机可读介质,所述计算机可读程序代码被配置为:创建用于所述内存的第二根对象,以便形成用于所述内存的第二对象图;以及响应于从所述第一对象图解除引用第一对象,将所述解除引用的第一对象与所述第二对象图关联,以便所述第二对象图包括一个或多个解除引用的对象。
本发明的实施例被安排为保护与从系统对象图中移除的内存对象有关的数据,用于标识这样的被移除的对象的源。
附图说明
现在将参照以下的附图,通过仅为示例的方式描述优选的实施例,附图中:
图1是对包括虚拟机的计算机系统的示意性说明;
图2a和2b是图1的虚拟机的内存中对象图的示意性表示;
图3是说明从图2b的对象图之一提取的数据的表;
图4是说明响应于图2a的对象图中的对象的解除引用、在计算机系统中进行的处理的流程图;以及
图5是说明响应于对得到图3的数据的图2b的对象图进行的垃圾回收处理而进行的处理的流程图。
具体实施方式
参照图1,计算机101加载有操作系统102,其提供用于一个或多个应用程序的处理平台。在本实施例中,该计算机加载有虚拟机环境应用程序103,其为JavaTM运行时环境(JavaTM runtime environment,JRE)应用程序的形式,被安排为使得用户能够在计算机101上运行一个或多个JavaTM虚拟机(JavaTM virtual machine,JVM)104。每个JVM 104包括虚拟内存105和包括垃圾回收模块的内存管理器程序106。每个JVM 104还包括存储器107,被安排为存储一个或多个用于在JVM 104上运行的程序108,以及存储输入或输出程序数据109。
内存管理器106被安排为通过按要求分配或解除分配内存105的部分给程序108,在JVM 104处理程序108之一个程序期间管理内存105的使用。内存管理器106定期地进行垃圾回收处理以扫描内存105,从而标识内存105中已经由程序108解除分配的部分,从内存的任何这样的部分中清除数据,并且将所述内存的部分标记为可用的,用于内存管理器106进一步分配给程序108。
在用于JVM 104的内存模型中,最初内存105是自由的且被分配给称作堆(heap)的内存管理数据构造,应来自程序108的以变量、函数或数据结构的形式存储内存对象的请求,从该堆分配内存105中的位置。参照图2a,由程序108在任何给定时间使用的内存对象201通过从一个对象201到另一个对象201的引用而被关联,以便形成系统对象图形式的第一对象图203。该系统对象图203包括称作系统根的根对象204。换言之,用于程序108的当前或活数据均通过引用202,或者直接、或者经由一个或多个其它对象201间接地关联到系统根204。任何给定的对象201可被任何数目的其它对象201引用。换言之,给定的对象201可通过从每个其它的对象201引用而与任意数目的其它对象201链接或关联。
当程序108不再需要对给定对象201的引用202时,将相关的引用202从该对象图103中移除。换言之,该对象201被解除引用。然而,由于对象201可被任何数目的其它对象201引用,因此移除一个引用不一定指示该对象已经被丢弃。仅当对给定对象的所有引用202都被移除时,该对象201才会视为被丢弃的。由于因此对丢弃的对象201的所有引用202应该已经是被移除的,因此丢弃的对象将不再与系统根204链接或关联。内存管理器106的垃圾回收处理被安排为遍历内存105的对象图,且标识出或者直接或者间接地链接到系统根204的所有对象201。这样的对象被称作为活(live)对象,即当前被相关的程序108使用的对象。所有其它的对象都视为是丢弃的或死(dead)对象,且因此可从内存105中移除,且其分配的内存返回到堆以供再次使用。
在本实施例中,内存管理器106被安排为响应于对象201的解除引用而收集用于对象201的数据。在垃圾回收处理期间,针对任何死的和将被丢弃的解除引用的对象,内存管理器106还被安排为以图1所示死对象数据110的形式保存与死对象有关的数据的预定集合。在本实施例中,死对象数据包括:
1.死对象的标识
2.到活对象的引用,死对象是从该活对象解除引用的;以及
3.标识该活对象中的字段的字段元数据,该字段包括被移除的、对该死对象的引用。
参照图2b,为了回收该死对象数据110,内存管理器106被安排为对内存105维持第二对象图205,其包括解除引用的对象(dereferenced object)。在本实施例中,第二对象图205包括根对象206,这里被称作为死根。内存管理器106被安排为响应于从第一对象图203即系统根对象图解除引用对象,将该解除引用的对象添加到解除引用的对象图205。在本实施例中,这通过以死对象信息对象207的形式向解除引用的对象图205添加新的对象来实现。在本实施例中,所有新的死对象信息对象从死根对象直接引用。死对象信息对象207包括对新解除引用的对象209的引用208。在本实施例中,死信息对象207还包括对活对象201的引用210,解除引用的对象209是从该活对象201解除引用的。还向解除引用的对象图205添加字段定义对象211,并从死对象信息对象207引用字段定义对象211。字段定义对象211包括标识活对象201中的字段的数据,该字段包含被移除的、对新解除引用对象209的引用。
由内存管理器106进行的垃圾回收处理被安排为在通常称为标记阶段的第一阶段搜索系统根对象图203并将所有存在的连接的对象标记为“活的”。换言之,或者直接从系统根204引用、或者经由系统根对象图203中一个或多个其它对象201间接从系统根204引用的所有对象被标识为当前正由加载的程序108使用。解除引用的对象图205不被用于标识“活”对象。然而经由系统根对象图203标识的一些对象也可存在于解除引用的对象图205中。这在当解除引用的对象被超过一个活对象引用、且当进行垃圾回收处理时一个或多个这样的引用保持时发生。
在垃圾回收处理的第二阶段,内存管理器106被安排为搜索解除引用的对象图205以标识在第一阶段中没有被标识为“活的”的、且因此作为从内存105中移除或扫除的候选的任何连接的对象209。该垃圾回收被安排为从该搜索中排除任何元数据对象,即在本实施例中为死信息对象207和字段定义对象211。这避免了垃圾回收处理对元数据对象的不必要的处理,元数据对象在本实施例中,从来不被“活”对象引用。对于每个这样的候选对象,标识在解除引用对象时创建的死对象信息对象207以及元数据对象211形式的相关联的对象,且提取和存储预定的死对象数据110如图3。因此,对于每个相关的对象,死对象数据110首先包括标识死对象209的对象标识符301。其次,死对象数据110包括死对象209的最初父母201的标识302,即最初引用了死对象209的对象201。从自死对象信息207到最初引用的对象201的引用210导出标识符302。再次,死对象数据110包括引用字段数据303,其标识对象201中曾用于最初引用死对象209的字段。从自死对象信息对象207引用的字段定义对象211中提取引用字段数据303。
在解除引用的对象图205中可存在这样的一些对象:其保持从系统根对象图203中的一个或多个活对象被引用,并且因此保持为“活的”。然而,在垃圾回收处理的第一阶段,与这样的被解除引用但仍旧为“活的”的对象相关联的元数据对象不会被标记为“活的”,这是因为不能从系统根204对其访问且因此将成为被移除的候选。因此,为了保留(preserve)用于这样被解除引用但仍旧为“活的”的对象的元数据对象,内存管理器106还被安排为标识任何在第二对象图205中被标记为“活的”的解除引用的对象,以及类似地将其相关联的元数据对象标记为“活的”以避免其之后被移除。
一旦已经从解除引用的对象图205的相关节点提取了死对象数据110,则发起垃圾回收处理中的第三阶段,其通常称为扫除阶段。在该第三阶段中,扫描内存105中的所有对象并且移除所有没被标记为“活的”的对象,且其内存分配被返回到堆用于再次使用。当对象被从内存105移除时,解除引用的对象图205被修复(repaired)从而移除如今多余的元数据对象,即在本实施例中为相关的死信息对象207和字段定义对象211。由于一些对象仍旧被自系统根对象图203中一个或多个活对象引用,因此其可保持在解除引用的对象图205中。
现在将参照图4的流程图描述响应于对象的解除引用而由内存管理器106进行的处理。响应于用于解除引用的对象的选择、在步骤401发起处理并且随后处理移至步骤402。在步骤402,该选择的对象被从系统根对象图203解除引用,并且处理移至步骤403。在步骤403,如果在内存105中目前不存在死根对象,则处理移至步骤404。在步骤404创建死根对象206,且处理移至步骤405。如果在步骤403在内存105中标识出死根对象206,则处理直接移至步骤405。在步骤405,创建新的死对象信息对象207,并且添加从死根对象206到新的死对象信息对象207的引用,且处理移至步骤406。在步骤406,添加从新的死对象信息对象207到活对象201的引用,该新对象201紧挨新解除引用的对象209的解除引用之前引用了该对象209,且处理移至步骤407。在步骤407,添加从新的死对象信息对象207到新解除引用的对象209的引用,且处理移至步骤408。在步骤408,创建新的元数据对象211,且数据标识之前引用对象201中的提供对新解除引用对象209的引用的字段,且处理移至步骤409。
现在将参照图5的流程图描述在垃圾回收处理中由内存管理器106进行的处理。在步骤501根据内存管理器106的垃圾回收调度发起处理且处理移至步骤502。在步骤502,遍历系统根对象图203,且将所有可访问的对象标记为活的,且处理移至步骤503。在步骤503,遍历解除引用的对象图205以标识任何被标记为“活的”的解除引用的对象,标识其相关联的元数据对象并将这些对象标记为“活的”且处理移至步骤504。在步骤504,遍历解除引用的对象图205,从而标识任何在步骤502中没有被标识为“活的”、且因此作为从内存105中移除的候选对象的任何连接的对象209,且处理移至步骤505。在步骤505,对每个标识的供移除的候选者,从解除引用的对象图205中的相关对象提取死对象数据110并存储该死对象数据110,且处理移至步骤506。在步骤506,从内存移除在步骤502中标识的、供移除的所有候选对象,且其内存分配返回到堆,并且处理移至步骤507。在步骤507,在需要的情况下修复解除引用的对象图205,从而考虑被移除的对象。处理随后移至步骤508且结束。
在另一实施例中,死对象数据包括最靠近的(closest)活对象的标识,最靠近的活对象或者直接或者经由一个或多个其它死对象间接地引用给定的死对象。
在又一个实施例中,内存管理器提供来自两个堆的内存分配。第一个堆提供对所有对象的存储,且第二个堆提供用于死根对象和元数据对象(诸如死信息对象和字段定义对象)的存储。响应于第一个堆中的对象的解除引用,在第二堆中创建对应的元数据对象集,包括对第一个堆中的解除引用的对象的交叉堆引用。当对第一个堆应用垃圾回收处理时,没有从活对象进一步引用的任何解除引用的对象将被标识为供移除的候选。来自第二堆中元数据对象的交叉-堆引用将不可见,且因此不会破坏由垃圾回收处理对解除引用的对象的标识。对于每个被标识为供移除的候选的对象,扫描第二个堆从而标识并输出相关联的对象元数据。随后移除从元数据到第一个堆中相关联的对象的交叉-堆引用。随后从四根开始对第二个堆进行第二垃圾回收处理,且该处理被安排为标识并移除任何没有连接到活对象的元数据对象,即没有对活对象的交叉-堆引用的元数据对象。
正如本领域的技术人员应理解的,本发明的实施例不限于JavaTM或JRETM,且可应用于任何虚拟机系统或环境。适合的虚拟机系统或环境可被安排为直接运行在计算机系统上或运行在操作系统上。换言之,虚拟机系统或环境可以本机地运行或被托管。虚拟机可通过软件仿真或硬件虚拟化提供。
正如本领域的技术人员应理解的,本发明的实施例可应用于物理机环境,即应用于直接运行在物理计算机上的以及提供用于运行一个或多个应用程序的平台的操作系统。
正如本领域的技术人员应理解的,可对给定的应用提供任何级别的死对象数据。在一些应用中,可提供最小限度的死对象数据,其提供用于每个死对象的单个数据项,诸如用于死对象的标识符、或紧挨死对象的解除引用之前引用了该死对象的对象的标识符,或最靠近的活对象的标识符,该活对象或者直接或者经由一个或多个死对象间接地引用给定的死对象。
本发明的实施例从死根引用与解除引用的对象相关联的元数据对象,且从元数据引用该解除引用的对象自身。这避免需要对象中额外的字段用于引用对象各自的元数据的。在一些实现方式中,可能需要隐藏这样额外的字段。
本发明的实施例被安排为保留与在计算机上的程序处理期间已经创建、并在随后已经作为垃圾回收处理或其它适合的内存管理处理的结果从内存移除的内存对象有关的数据。该数据可包括移除的对象的标识符、或与移除的对象相关联或引用移除的对象的对象的细节。该数据可包括引用对象的字段的标识,曾自该引用对象引用该移除的对象。死对象数据可以被用于标识创建各自对象的程序、部分程序或其它处理。这样的标识对于监控、测量、修改或提高相关程序、程序部分或其它处理的内存使用率是有用的。该数据可被用于在相关联的处理中、在选择的点处重构系统对象图。
本领域的技术人员应理解,具体化本发明的一部分或全部的装置可以是具有被安排为提供本发明的实施例的一部分或全部的软件的通用设备。该设备可以是单个设备或设备的组,且该软件可以是单个程序或程序集。此外,任何或所有用来实现本发明的软件可经由任何适合的传输或存储装置通信以便该软件可加载到一个或多个设备上。
尽管已经通过对本发明实施例的描述对其进行了说明,且尽管已经以相当多的细节描述了实施例,但是发明人并不旨在将所附权利要求的范围限制或以任何方式限定于这样的细节。对本领域的技术人员而言,额外的优点和修改会是容易想到的。因此,本发明在其较宽泛的方面并不限于代表性的装置和方法的特定细节,以及示出和描述的说明性示例。因此,可以在不偏离发明人总体发明理念的范围内偏离这样的细节。

Claims (17)

1.一种用于管理计算机系统中内存的方法,其中在任何给定时间使用的内存位置被表示为第一对象图中的内存对象集,所述第一对象图包括通过对每个所述内存对象的引用而关联的系统根对象,所述方法包括下述步骤:
创建用于所述内存的第二根对象,以便形成用于所述内存的第二对象图;以及
响应于从所述第一对象图解除引用第一对象,将所述解除引用的第一对象与所述第二对象图关联,以便所述第二对象图包括一个或多个解除引用的对象;
标识所述第一对象图中的第二对象,所述第二对象紧挨所述第一对象的解除引用之前引用了所述第一对象;以及
创建从所述第二对象图到所述第二对象的引用,以便将所述第二对象图中的所述第一对象与所述第一对象图中的所述第二对象关联。
2.根据权利要求1所述的方法,其包括下述步骤:
在所述第二对象图中创建第一元数据对象,所述第一元数据对象被安排为提供从所述第二对象图到所述第一对象图中的所述第二对象的所述引用,以及被安排为引用所述第二对象图中的所述第一对象。
3.根据权利要求1所述的方法,其包括下述步骤:
标识用于所述第一对象的预定的元数据,该预定的元数据用于标识紧挨所述解除引用之前所述第一对象图中所述第一对象的位置;以及
将所述元数据与所述第一对象关联地存储在所述第二对象图中。
4.根据权利要求3所述的一种方法,其中将所述元数据存储在与所述第二对象图中的所述第一对象关联的第二元数据对象中。
5.根据权利要求3所述的方法,其中所述元数据包括标识所述第二对象中的字段的数据,该字段用于紧挨所述第一对象的所述解除引用之前从所述第二对象引用所述第一对象。
6.根据权利要求1所述的方法,其包括下述步骤:
响应于在其中标识包括存在于所述第一对象图中的所有对象的第一对象集的垃圾回收的第一阶段,标识包括存在于所述第二对象图中且不存在于所述第一对象图中的对象的第二对象集;以及
在其中从所述内存删除所述第二对象集的垃圾回收的任何进一步的阶段之前,保存与所述第二对象集中的所述对象的每个关联的预定数据。
7.根据权利要求6所述的方法,其中所述预定数据包括标识所述第一对象的数据。
8.根据权利要求6所述的方法,其中所述预定数据包括标识所述第二对象的数据,所述第二对象紧挨所述第一对象的解除引用之前引用了所述第一对象。
9.根据权利要求6所述的方法,其中所述预定数据包括标识所述第二对象中的字段的数据,该字段紧挨所述解除引用之前引用了所述第一对象图中的所述第一对象。
10.一种用于管理计算机系统中内存的装置,其中在任何给定时间使用的内存位置被表示为第一对象图中的内存对象集,所述第一对象图包括通过对每个所述内存对象的引用而关联的系统根对象,所述装置可操作从而:
创建用于所述内存的第二根对象,以便形成用于所述内存的第二对象图;以及
响应于从所述第一对象图解除引用第一对象,将所述解除引用的第一对象与所述第二对象图关联,以便所述第二对象图包括一个或多个解除引用的对象;
标识所述第一对象图中的第二对象,所述第二对象紧挨所述第一对象的解除引用之前引用了所述第一对象;以及
创建从所述第二对象图到所述第二对象的引用,以便将所述第二对象图中的所述第一对象与所述第一对象图中的所述第二对象关联。
11.根据权利要求10所述的装置,其可操作从而:
在所述第二对象图中创建第一元数据对象,所述第一元数据对象被安排为提供从所述第二对象图到所述第一对象图中的所述第二对象的所述引用,以及被安排为引用所述第二对象图中的所述第一对象。
12.根据权利要求10所述的装置,其可操作从而:
标识用于所述第一对象的预定的元数据,该预定的元数据用于标识紧挨所述解除引用之前所述第一对象图中所述第一对象的位置;以及
将所述元数据与所述第一对象关联地存储在所述第二对象图中。
13.根据权利要求12所述的装置,其中将所述元数据存储在与所述第二对象图中的所述第一对象关联的第二元数据对象中。
14.根据权利要求12所述的装置,其中所述元数据包括标识所述第二对象中的字段的数据,该字段用于紧挨所述第一对象的所述解除引用之前从所述第二对象引用所述第一对象。
15.根据权利要求10所述的装置,其可操作从而:
响应于在其中标识包括存在于所述第一对象图中的所有对象的第一对象集的垃圾回收的第一阶段,标识包括存在于所述第二对象图中且不存在于所述第一对象图中的对象的第二对象集;以及
在其中从所述内存删除所述第二对象集的垃圾回收的任何进一步的阶段之前,保存与所述第二对象集中的所述对象的每个关联的预定数据。
16.根据权利要求15所述的装置,其中所述预定数据包括标识所述第一对象的数据。
17.根据权利要求15所述的装置,其中所述预定数据包括标识所述第二对象的数据,所述第二对象紧挨所述第一对象的解除引用之前引用了所述第一对象。
CN201310178857.8A 2012-05-15 2013-05-15 用于管理计算机系统中内存的方法和装置 Active CN103425729B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1208434.9 2012-05-15
GB1208434.9A GB2502076A (en) 2012-05-15 2012-05-15 Managing memory in a computer system

Publications (2)

Publication Number Publication Date
CN103425729A CN103425729A (zh) 2013-12-04
CN103425729B true CN103425729B (zh) 2017-04-05

Family

ID=46458785

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310178857.8A Active CN103425729B (zh) 2012-05-15 2013-05-15 用于管理计算机系统中内存的方法和装置

Country Status (5)

Country Link
US (5) US9575879B2 (zh)
JP (1) JP5896952B2 (zh)
CN (1) CN103425729B (zh)
DE (1) DE102013207861A1 (zh)
GB (1) GB2502076A (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9098470B2 (en) * 2011-05-23 2015-08-04 Microsoft Technology Licensing, Llc Versioned and hierarchical data structures and distributed transactions
GB2502076A (en) 2012-05-15 2013-11-20 Ibm Managing memory in a computer system
US10324921B1 (en) * 2015-06-30 2019-06-18 Open Text Corporation Method and system for using external content type object types
US11030262B2 (en) * 2015-08-25 2021-06-08 Verizon Media Inc. Recyclable private memory heaps for dynamic search indexes
CN106909457A (zh) * 2015-12-23 2017-06-30 北京奇虎科技有限公司 内存管理方法及装置
US20180217822A1 (en) * 2017-01-27 2018-08-02 Intuit Inc. Object graph traversal and processing
JP2023044330A (ja) * 2021-09-17 2023-03-30 キオクシア株式会社 メモリシステムおよび制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751335A (zh) * 2008-11-28 2010-06-23 国际商业机器公司 调度虚拟机的垃圾收集的方法、装置和集群系统
CN102411513A (zh) * 2011-08-10 2012-04-11 复旦大学 一种工作于混合模式执行引擎中的垃圾收集方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL9001262A (nl) 1990-06-05 1992-01-02 Oce Nederland Bv Werkwijze voor het in een logisch georganiseerd systeem, van door digrafen te representeren groepen van met elkaar in relatie staande entiteiten, distribueren van status-informatie betreffende een digraaf en een inrichting voor het toepassen van een dergelijke werkwijze.
US5274804A (en) * 1991-11-20 1993-12-28 Parcplace Systems Automatic storage-reclamation postmortem finalization process
US6093216A (en) 1998-05-29 2000-07-25 Intel Corporation Method of run-time tracking of object references in Java programs
GB9907283D0 (en) * 1999-03-31 1999-05-26 Koninkl Philips Electronics Nv Memory reclamation method
US6920541B2 (en) * 2000-12-21 2005-07-19 International Business Machines Corporation Trace termination for on-the-fly garbage collection for weakly-consistent computer architecture
US6804681B2 (en) 2001-05-08 2004-10-12 Sun Microsystems, Inc. Identifying and tracking object references in a java programming environment
JP4041347B2 (ja) * 2001-05-29 2008-01-30 松下電器産業株式会社 ガベージコレクション装置及びガベージコレクション方法
US6728738B2 (en) 2002-04-03 2004-04-27 Sun Microsystems, Inc. Fast lifetime analysis of objects in a garbage-collected system
US20040181562A1 (en) 2003-03-13 2004-09-16 Piotr Findeisen System and method for determining deallocatable memory in a heap
US20050081190A1 (en) * 2003-09-30 2005-04-14 International Business Machines Corporation Autonomic memory leak detection and remediation
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
US20060173939A1 (en) * 2005-01-31 2006-08-03 Baolin Yin Garbage collection and compaction
US7912877B2 (en) 2005-05-20 2011-03-22 Microsoft Corporation Leveraging garbage collection to dynamically infer heap invariants
US7693919B2 (en) 2006-02-10 2010-04-06 Microsoft Corporation Eager reference-counting garbage collection
US20090013017A1 (en) * 2007-07-03 2009-01-08 Branda Steven J Methods, Systems, and Computer Program Products for Optimizing Virtual Machine Memory Consumption
TWI438633B (zh) * 2007-11-29 2014-05-21 Ibm 記憶體管理之垃圾收集方法、其電腦程式產品,及其裝置
US8312219B2 (en) 2009-03-02 2012-11-13 International Business Machines Corporation Hybrid caching techniques and garbage collection using hybrid caching techniques
US9274946B2 (en) * 2009-12-30 2016-03-01 International Business Machines Corporation Pre-leak detection scan to identify non-pointer data to be excluded from a leak detection scan
US8108447B2 (en) 2010-03-11 2012-01-31 Symantec Corporation Systems and methods for garbage collection in deduplicated data systems
US8346821B2 (en) 2010-05-07 2013-01-01 International Business Machines Corporation Orphan object tracking for objects having acquire-release semantics
US20120066270A1 (en) 2010-09-13 2012-03-15 Alelo, Inc. Automated memory management of indexed data using weak references
GB2502076A (en) 2012-05-15 2013-11-20 Ibm Managing memory in a computer system
JP5564540B2 (ja) 2012-08-08 2014-07-30 株式会社日立製作所 メモリ管理方法、コンピュータ及びプログラム
JP5756549B2 (ja) 2014-06-16 2015-07-29 株式会社日立製作所 記憶領域管理方法、計算機システム及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101751335A (zh) * 2008-11-28 2010-06-23 国际商业机器公司 调度虚拟机的垃圾收集的方法、装置和集群系统
CN102411513A (zh) * 2011-08-10 2012-04-11 复旦大学 一种工作于混合模式执行引擎中的垃圾收集方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Java垃圾收集机制及性能调节;曾天慧 等;《计算机工程与设计》;20060930;第27卷(第17期);3242-3247页 *
Java虚拟机中内存管理机制研究;徐正超 等;《中南民族大学学报(自然科学版)》;20070930;第26卷(第3期);87-91页 *

Also Published As

Publication number Publication date
JP2013239156A (ja) 2013-11-28
US20130311730A1 (en) 2013-11-21
JP5896952B2 (ja) 2016-03-30
GB201208434D0 (en) 2012-06-27
US10909029B2 (en) 2021-02-02
CN103425729A (zh) 2013-12-04
US20160328318A1 (en) 2016-11-10
GB2502076A (en) 2013-11-20
US10031843B2 (en) 2018-07-24
US20160328319A1 (en) 2016-11-10
DE102013207861A1 (de) 2013-11-21
US10037269B2 (en) 2018-07-31
US9575879B2 (en) 2017-02-21
US20180285251A1 (en) 2018-10-04
US10372601B2 (en) 2019-08-06
US20190251022A1 (en) 2019-08-15

Similar Documents

Publication Publication Date Title
CN103425729B (zh) 用于管理计算机系统中内存的方法和装置
KR102198680B1 (ko) 확장 가능한 멀티-스테이지 데이터 처리 시스템들에서의 효율적인 데이터 캐싱 관리
US6757890B1 (en) Methods and apparatus for enabling local Java object allocation and collection
US6820101B2 (en) Methods and apparatus for optimizing garbage collection using separate heaps of memory for storing local objects and non-local objects
CN107066498B (zh) 键值kv存储方法和装置
US10628304B2 (en) Garbage collection in an in-memory replication system
US8255918B2 (en) Namespace merger
CN111597148B (zh) 用于分布式文件系统的分布式元数据管理方法
GB2446071A (en) Method of dynamic memory management in an object oriented system
CN104881466A (zh) 数据分片的处理以及垃圾文件的删除方法和装置
CN105335223A (zh) 源主机和目的主机上的虚拟机内存迁移装置、方法及系统
US7797508B2 (en) Fair memory resource control for mapped memory
US20130086124A1 (en) Mapping Data Structures
CN115391427A (zh) Impala自动化伸缩的系统、方法、介质及设备
US7991976B2 (en) Permanent pool memory management method and system
CN113377724A (zh) 一种缓存空间管理方法、装置和存储介质
US8073882B2 (en) Method, system and computer-readable media for managing software object handles in a dual threaded environment
US20100049747A1 (en) Apparatus and method for storing log in a thread oriented logging system
Bell et al. Host-Based Allocators for Device Memory
JP2994138B2 (ja) 対話処理システムにおけるカタログの変数管理方法
CN113918518A (zh) 文件处理方法、装置、设备及存储介质
CN117632943A (zh) 数据查找方法、装置、设备、存储介质及车辆
CN111241132A (zh) 基于大数据分析的数据查询项目执行方法及装置
CN115248831A (zh) 一种标注方法、装置、系统、设备及可读存储介质
US20140304478A1 (en) Space Reclamation of Objects in a Persistent Cache

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant