CN102999328A - 在循环图中管理对象生命期 - Google Patents

在循环图中管理对象生命期 Download PDF

Info

Publication number
CN102999328A
CN102999328A CN2012103549219A CN201210354921A CN102999328A CN 102999328 A CN102999328 A CN 102999328A CN 2012103549219 A CN2012103549219 A CN 2012103549219A CN 201210354921 A CN201210354921 A CN 201210354921A CN 102999328 A CN102999328 A CN 102999328A
Authority
CN
China
Prior art keywords
wrapper
counted
cited
refuse collection
action
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
CN2012103549219A
Other languages
English (en)
Other versions
CN102999328B (zh
Inventor
M·J·希尔伯格
R·克里什纳斯瓦米
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 CN102999328A publication Critical patent/CN102999328A/zh
Application granted granted Critical
Publication of CN102999328B publication Critical patent/CN102999328B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • 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/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Processing Of Solid Wastes (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明扩展到在循环图中管理对象生命期的方法、系统和计算机程序产品。本发明的实施例包括例如从混合不同资源收回技术(如引用计数和垃圾收集)的对象图中收回分配的系统资源。响应于确定要执行垃圾收集,检测GC对象与被引用计数对象之间的引用。此外对任何检测到的引用确定引用类型(例如直接、间接、标准、被跟踪、弱化等)。执行垃圾收集以确定是否可以收回任何分配的系统资源。当确定是否要收回对象时,垃圾收集考虑GC对象与被引用计数对象之间的引用。

Description

在循环图中管理对象生命期
背景技术
计算机系统和相关技术影响社会的许多方面。事实上,计算机系统处理信息的能力已经改变了我们生活和工作的方式。计算机系统现在普遍执行大量任务(例如,文字处理、日程、记账等),这些任务在计算机系统出现之前是手工执行的。最近,计算机系统已经相互耦合以及耦合到其他电子设备,形成有线和无线计算机网络,通过这些网络计算机系统和其他电子设备可以传输电子数据。相应地,许多计算任务的执行被分布在许多不同的计算机系统和/或许多不同的计算环境中。
一些编程环境(例如C++)使用引用计数作为确定对象何时不再被引用并从而可以释放用于存储对象的内存的机制。如果对象不能直接被引用,通过将对象从内存移除,从而管理对象的生命期。当一个对象引用另一对象时,增加被引用对象的引用计数。当一个对象引用另一对象时,该对象的引用计数减少。当一个对象的引用计数达到零时,它是不可访问的,并且可以将其毁灭。
然而,引用计数相对不复杂,可能导致内存泄露(即,未使用的和有可能不可访问的对象继续消耗内存)。例如,可能两个对象相互引用但却未被任何其他对象引用,产生循环。当出现循环时,引用计数可能无法确定这两个对象仅仅是相互引用而却没有被其他引用。因此,这两个对象的内存未被释放,引起内存泄露。
其他编程环境(例如C#)使用垃圾收集作为确定对象何时不再被引用并从而可以释放用于存储对象的内存的机制。垃圾收集通过查找不能被直接或者间接引用的对象并且移除它们来管理对象的生命期。垃圾收集通过考虑到间接引用而解决了与循环相关的问题。
一些编程环境利用引用计数对象和垃圾收集对象。例如,开发者可能希望利用使用不同对象生命期管理技术的不同编程语言。在这些混合的编程环境中,被引用计数对象可以引用垃圾收集对象和/或垃圾收集对象可以引用计数对象。然而,垃圾收集系统可能无法通过被引用计数对象跟踪间接引用。因此,在混合的编程环境中仍然可能出现内存泄露。
发明内容
本发明扩展到在循环图中管理对象生命期的方法、系统和计算机程序产品。本发明的实施例包括例如从混合不同资源收回技术的对象图中准备收回以及收回分配的系统资源。在一些实施例中,计算机系统确定要实施垃圾收集。响应于确定要实施垃圾收集,检测根据垃圾收集管理的对象与根据引用计数管理的对象之间的引用。此外对任何检测到的引用确定引用类型(例如直接、间接、标准、被跟踪、弱化等)。实施垃圾收集以确定是否可以收回任何分配的系统资源。作为系统资源收回确定的一部分,垃圾收集考虑根据垃圾收集管理的对象与根据引用计数管理的对象之间引用和引用类型。
一般而言,对象可以请求创建和/或移除到和/或来自其他对象的引用。例如,当要收集对象时(例如为了收回系统资源),可以在要被收集的对象从图中移除之前通知从要被收集的对象引用的其他对象。响应于该通知,被引用对象可以断开从该被引用对象到再一对象的弱化引用。垃圾收集然后可以继续来确定是否可以收回任何另外分配的系统资源。继续的垃圾收集考虑断开从另一对象到再一对象的弱化引用。
提供本发明内容来以简化的形式介绍一系列概念,这些概念下面在具体实施方式中进一步描述。本发明内容并不意图标识所要求保护的主题的关键特征或基本特征,也不意图用作帮助确定所要求保护的主题的范围。
本发明的额外特征和优点将会在下面的描述中阐述,并且通过描述而部分地变得明显,或者可以通过本发明的实践而习得。本发明的特征和优点可以通过所附权利要求中特别指出的装置和组合而实现和获得。本发明的这些和其他特征通过下面描述和所附权利要求将变得充分清楚,或者可以通过下面阐述的本发明的实践习得。
附图说明
为了描述可以获得本发明的上述和其他优点和特征的方式,将参照附图中所示的其特定实施例来呈现对上面简要描述的本发明的更具体描述。理解这些附图仅仅描绘本发明的典型实施例,因此不应当被认为是限制其范围,将通过使用附图以额外的特性和细节描述和说明本发明,在附图中:
图1A示出促进在循环图中管理对象生命期的示例计算机架构。
图1B示出示例循环图。
图1C示出示例循环图。
图1D示出示例循环图。
图1E示出示例循环图。
图1F示出示例循环图。
图2示出用于同步来自被计数对象图的引用信息与被垃圾收集对象图以准备尝试收回系统资源的示例方法的流程图。
图3示出用于确定如何引用被引用计数对象以准备尝试收回系统资源的示例方法的流程图。
图4示出用于收回分配的系统资源的示例方法的流程图。
具体实施方式
本发明扩展到在循环图中管理对象生命期的方法、系统和计算机程序产品。本发明的实施例包括例如从混合不同资源收回技术的对象图中收回分配的系统资源。在一些实施例中,计算机系统确定要实施垃圾收集。响应于确定要实施垃圾收集,检测根据垃圾收集管理的对象与根据引用计数管理的对象之间的引用。此外对任何检测到的引用确定引用类型(例如直接、间接、标准、被跟踪、弱化等)。实施垃圾收集以确定是否可以收回任何分配的系统资源。作为系统资源收回确定的一部分,垃圾收集考虑根据垃圾收集管理的对象与根据引用计数管理的对象之间引用和引用类型。
一般而言,对象可以请求创建和/或移除到和/或来自其他对象的引用。例如,当要收集对象时(例如为了收回系统资源),可以在要被收集的对象从图中移除之前通知从要被收集的对象引用的其他对象。响应于该通知,被引用对象可以断开从该被引用对象到再一对象的弱化引用。垃圾收集然后可以继续来确定是否可以收回任何另外分配的系统资源。继续的垃圾收集考虑断开从另一对象到再一对象的弱化引用。
本发明的实施例可以包括或者利用专用或通用计算机,专用或通用计算机包括计算机硬件,例如一个或更多个处理器和系统内存,这会在下面更详细讨论。本发明的范围内的实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这种计算机可读介质可以是能够由通用或专用计算机系统访问的任何可用的介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。承载计算机可执行指令的计算机可读介质是传输介质。因此,示例性而非限制性地,本发明的实施例可以包括至少两个明显不同种类的计算机可读介质:计算机存储介质(设备)和传输介质。
计算机存储介质(设备)包括RAM、ROM、EEPROM、CDROM、固态驱动器(“SSD”)(例如基于RAM)、闪速存储器、相变存储器(“PCM”)、其他类型的存储器、其他光盘存储装置、磁盘存储装置或其他磁性存储设备,或者可以用于存储计算机可执行指令或数据结构形式的期望程序代码装置并且可以由通用或专用计算机访问的任何其他介质。
“网络”被定义为允许计算机系统和/或模块和/或其他电子设备之间的电子数据传输的一个或更多个数据链路。当信息通过网络或另一通信连接(硬线,无线或者硬线或无线的组合)传输或提供给计算机时,计算机适当地将该连接看做传输介质。传输介质可以包括能够用于承载计算机可执行指令或数据结构形式的期望程序代码装置并且可以由通用或专用计算机访问的网络和/或数据链路。上述的组合也应当包括在计算机可读介质的范围之内。
此外,在到达各种计算机系统组件后,计算机可执行指令或数据结构形式的程序代码装置可以从传输介质自动传输到计算机存储介质(设备)(或者反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以缓存在网络接口模块(例如“NIC”)的RAM内,然后最终传输到计算机系统RAM和/或传输到计算机系统处的不那么易失的计算机存储介质(设备)。因此,应当理解,计算机存储介质(设备)可以被包括在同样(或者甚至主要)利用传输介质的计算机系统组件中。
计算机可执行指令包括例如当在处理器处执行时使通用计算机、专用计算机或专用处理设备执行一定功能或功能组的指令和数据。计算机可执行指令可以是例如二进制、中间格式指令,如汇编语言或者甚至源代码。尽管以特定于结构特征和/或方法动作的语言描述了主题,但要理解,所附权利要求中限定的主题不必限于上面所述的特征或动作。相反,所描述的特征和动作是作为实施权利要求的示例形式公开的。
本领域技术人员将理解,本发明可以在具有许多类型的计算机系统配置的网络计算环境中实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、平板电脑、寻呼机、路由器、交换机等等。本发明还可以在分布式系统环境中实践,其中通过网络(通过硬线数据链路、无线数据链路或者通过硬线和无线数据链路的组合)链接的本地和远程计算机系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储储存设备两者中。
在说明书和后面的权利要求书内,“引用包装器”(“RW”)被定义为根据垃圾收集(下面可以称为“GC对象”)收回的对象,并且其存储从另一GC对象到根据引用计数(下面可以称为“被引用计数对象”)收回的再一对象的引用。也就是说,RW存储从GC对象到被引用计数对象的引用。
在说明书和后面的权利要求书内,“被计数包装器”(“CW”)被定义为存储从另一被引用计数对象到GC对象的被引用计数对象。也就是说,CW存储从被引用计数对象到GC对象的引用。
在说明书和后面的权利要求书内,“标准引用”被定义为任何被引用计数的引用。例如,公共对象模型(“COM”)引用是对象引用计数算法的示例。标准引用可以根据添加引用/释放(AddRef/Release)模式实施。
在说明书和后面的权利要求书内,“被跟踪引用”被定义为类似于标准引用的引用,但“被跟踪引用”在垃圾收集期间还向对象通信。通信可以指示被引用计数对象(例如CW)是否可通过RW以外的某种方式(直接或间接)到达。当被引用计数对象可通过RW以外的方式到达时,该被引用计数对象可以被保护(或“限制”)。当被保护时,该被引用计数对象可以甚至没有直接引用该被引用计数对象的RW或其他GC对象存活过垃圾收集的情况下存活过垃圾收集。当被引用计数对象仅可通过RW到达时,不保护该被引用计数对象。
在说明书和后面的权利要求书内,“弱引用”是用于引用对象而没有保持其不被收回的引用。也就是说,弱引用不控制弱引用直接引用的对象的生命期。
在一些实施例中,在垃圾收集(例如当GC系统正标识可以从内存移除的GC对象时)之前,GC系统去往每个RW并确定哪些CW可以通过被计数对象图到达。如果存在从RW出发目标为CW的多种方式,可以找出一个或更多种。对于每个发现,在该RW与该CW目标(它是另一GC对象)之间创建GC相关性。因此,如果该RW对象在GC操作期间没有被收集,则也不收集该CW的目标。也就是说,该RW是该CW目标的生命期的保护者。
在其他实施例中,在垃圾收集之前,被计数对象系统标识应当被限制的CW。如果存在通过RW以外的某种方式(直接或间接)到达CW,则该CW应当被限制。也就是说,在应当保护CW目标不被垃圾收集的情况下,即使没有RW或其他GC对象直接引用,该CW仍存活过垃圾收集处理。
这些预收集操作可以用于以锁定机制保护被计数对象之间的引用。
图1A示出在循环图中促进管理对象生命期的示例计算机架构100。计算机架构100包括生命期管理模块101、被计数对象图106和被垃圾收集对象图107。被计数对象图106总的被引用计数对象151可以引用被垃圾收集对象图107中的GC对象152,反之亦然。被引用计数对象151与GC对象152之间的引用可以形成循环图109。
一般而言,生命期管理模块101被配置为在循环图(例如循环图109)中管理对象生命期。如所绘出的,生命期管理模块101包括引用计数组件102、分析组件103和垃圾收集组件104。
引用计数组件102被配置为计算循环图内对象上的引用。引用计数组件102可以采用多数任何引用计数技术来计算对象上的引用。引用可以包括对象之间的外部引用或内部引用。引用计数组件102可以确定对象上的引用总数并且相应地为该对象分配引用计数。
分析组件103被配置为分析循环图中对象上的引用。基于该分析,分析组件103可以弱化或者加强对象之间的引用。分析组件103可以基于该分析确定生命期管理从引用计数系统到垃圾收集系统的转换。
一般而言,生命期管理模块101可以通过采用垃圾收集组件104毁灭或者释放未使用对象。当对象是不可到达的从而不存在到该对象的直接或间接引用时,可以收集该对象。垃圾收集组件104可以基于对象的可到达性信息确定要毁灭的对象。可以由引用计数组件102和/或分析组件103提供可到达性信息。
本发明的实施例包括同步被引用计数的信息与垃圾收集。从被引用计数侧到GC侧的引用信息在GC处理期间或者作为GC处理的一部分而被提供。也就是说,从RW到CW目标的引用在GC期间做出,并且可以在GC处理完成之后丢弃(适当的话在下一GC上重新创建)。可替代地和/或组合地,可以使用某种类型的缓存以便性能优化。
图1B示出示例循环图109。参照图1B,循环图109包括被引用计数对象111和112、GC对象114和116、被计数包装器113和引用包装器117。GC对象114通过引用包装器117引用被引用计数对象111(引用126)。被引用计数对象112通过被计数包装器113引用GC对象116(引用123)。引用121(外部引用)也引用被引用计数对象111。
图2示出用于在循环图中管理对象生命期的示例方法200的流程图。将关于计算机架构100的组件和图1B所示的循环图109描述方法200。
方法200包括确定要执行垃圾收集的动作(动作201)。例如,垃圾收集组件104可以确定要执行循环图109的垃圾收集。
响应于该确定并且在执行垃圾收集之前,方法200包括确定被计数包装器可以从引用包装器经由被计数对象图到达(动作202)。例如,分析组件103可以确定被计数包装器113可以从引用包装器117到达。响应于该确定并且在执行垃圾收集之前,方法200还包括通过创建从引用包装器到GC对象的引用来保护经过被计数包装器引用的GC对象的生命期(动作203)。例如,分析模块103可以通过创建从引用包装器117到GC对象116的引用127来保护GC对象116。
方法200包括执行垃圾收集以确定是否可以收回分配的系统资源的动作(动作204),垃圾收集考虑由引用包装器有效引用的GC对象。例如,垃圾收集组件104可以在循环图109上执行垃圾收集。垃圾收集可以确定是否可以收回为循环图109的对象分配的任何资源。垃圾收集组件104可以考虑由引用包装器117有效引用的GC对象(引用127)。
方法200包括在垃圾收集后移除引用包装器与GC对象之间的引用的动作(动作205)。例如,在循环图109上的垃圾收集后,分析模块103可以移除引用127。
图1C示出示例循环图109。与图1B类似,图1C中的循环图109包括被引用计数对象111和112、GC对象114和116、被计数包装器113和引用包装器117。GC对象114通过引用包装器117引用被引用计数对象111(引用126)。被引用计数对象112通过被计数包装器113引用GC对象116(引用123)。引用121(外部引用)也引用被引用计数对象111。
图3示出用于确定如何引用被引用计数对象以准备尝试收回系统资源的示例方法300的流程图。将关于计算机架构100的组件和图1C所示的循环图109描述方法300。
方法300包括确定要执行垃圾收集的动作(动作301)。例如,垃圾收集组件104可以确定要执行循环图109的垃圾收集。
向应于该确定并且在实施垃圾收集之前,方法300包括确定被计数包装器通过指定类型的引用的可到达性(动作302)。例如,分析模块103可以确定被计数包装器113通过标准和/或被跟踪引用的可到达性。如图1C所绘出的,被计数包装器113可从引用121(标准引用)和引用126(被跟踪引用)到达。
响应于该确定并且在实施垃圾收集之前,方法300包括基于该指定类型的引用访问关于垃圾收集的信息(动作303)。例如,引用计数组件102可以从引用121和/或引用126访问关于循环图109的垃圾收集的信息。关于引用121,引用计数组件102可以访问指示引用121是标准引用的信息。
关于引用126,引用计数组件102可以访问指示引用126是被跟踪引用的信息。从引用126,引用计数组件102还可以访问是否被计数包装器113可通过RW以外的对象到达。在图1C中,引用126会指示被计数包装器113只能从引用包装器117到达。然而,基于通过标准引用121的可到达性,引用计数组件102可以限制被计数包装器113,以便在垃圾收集期间进行保护。
方法300包括执行垃圾收集以确定是否可以收回任何分配的系统资源的动作(动作304),垃圾收集考虑当确定是否要收回被引用计数对象时访问的信息。例如,垃圾收集组件104可以执行循环图109上的垃圾收集。垃圾收集可以考虑从引用121和126访问的信息。基于被计数包装器113被引用计数组件102限制,被计数包装器113不被收回(循环图109中的任何其他对象也不被收回)并且保留在内存中。
也就是说,由于存在引用121,因此限制被计数包装器113。限制被计数包装器113指示GC对象116被垃圾收集组件104认为是全局可到达的。在垃圾收集期间,所有对象都不移除。垃圾收集组件104保持GC对象116活着,并且引用124使得垃圾收集保持GC对象114活着,并且进而保持RW117活着。由于RW117保持被引用计数对象111上的被计数引用,因此被引用计数对象111和112由于引用112而活着。
现在参考图1D,图1D示出示例循环图109。图1D中的循环图109包括被引用计数对象111和112、GC对象114和116、被计数包装器113和引用包装器117。GC对象114通过引用包装器117引用被引用计数对象111(引用126)。被引用计数对象112通过被计数包装器113引用GC对象116(引用123)。引用128(外部引用)也引用被引用GC对象114。
在图1D中,分析模块103可以确定被计数包装器113可从引用126(被跟踪引用)到达。引用计数组件102可以从引用126访问关于循环图109的垃圾收集的信息。关于引用126,引用计数组件102可以访问指示引用126是被跟踪引用的信息。从引用126,引用计数组件102还可以访问是否被计数包装器113可通过RW以外的对象到达。
在图1D中,引用126会指示被计数包装器113可从另一对象经由引用128到达。因此,引用计数组件102可以限制被计数包装器113。基于被计数包装器113被限制,被计数包装器113不被收回(循环图109中的任何其他对象也不被收回)。也就是说,由于存在引用128(到GC对象114的直接或间接全局GC引用),因此所有对象保留在内存中。例如,如果引用128可能不直接是全局GC引用,它可能是来自自身被全局GC引用所引用的对象的引用。引用128使得使得垃圾收集组件104保持GC对象114活着,从而保持引用包装器117活着。回头参考图1B,类似于引用127的引用可以保持GC对象116活着。
现在参考图1E,图1E示出示例循环图109。图1E中的循环图109包括被引用计数对象111和112、GC对象114和116、被计数包装器113和引用包装器117。GC对象114通过引用包装器117引用被引用计数对象111(引用126)。被引用计数对象112通过被计数包装器113引用GC对象116(引用123)。
在图1E中,分析模块103可以确定被计数包装器113可从引用126(被跟踪引用)到达。引用计数组件102可以从引用126访问关于循环图109的垃圾收集的信息。关于引用126,引用计数组件102可以访问指示引用126是被跟踪引用的信息。从引用126,引用计数组件102还可以访问是否被计数包装器113可通过RW以外的对象到达。
在图1E中,引用126会指示被计数包装器113只能从引用包装器117到达。因此,引用计数组件102不限制被计数包装器113。由于被计数包装器113不被限制,因此它可以(并且会)在垃圾收集期间被收回。
在图1E中,所有对象都被垃圾收集处理移除。由于不存在到GC对象114的引用,因此垃圾收集组件104可以移除GC对象114,然后类似地移除引用包装器117。在移除引用包装器117期间,移除引用126(被引用计数对象111上的计数)。移除计数导致被引用计数对象111在其计数从被引用计数对象112移除之后自身从内存移除。被引用计数对象112类似地从被计数包装器113移除其计数,然后自身从存储器移除。被计数包装器113移除GC对象116上的引用123,这被垃圾收集组件104识别为从内存移除GC对象116的信号。
本发明的进一步实施例包括收集通知。在GC对象被收集时但在结束之前(稍后在本说明书中描述),GC对象通知被引用计数对象。该通知可以解决被引用计数对象直到GC对象被结束为止未被实际释放。它还允许断开被引用计数侧上的弱引用。
图1F示出示例循环图。现在参照图1F,图1F示出示例循环图109。图1F中的循环图109包括被引用计数对象111和112、GC对象114和116、被计数包装器113和引用包装器117。GC对象114通过引用包装器117引用被引用计数对象111(引用126)。被引用计数对象112通过被计数包装器113引用GC对象116(引用123)。引用128(外部引用)也引用GC对象114。弱引用129从被引用计数对象112引用被计数对象111。
图4示出用于收回分配的系统资源的示例方法400的流程图。将关于计算机架构100的组件和图1F所示的循环图109描述方法400。
方法400包括确定要在垃圾收集期间收回用于存储GC对象的一部分系统资源的动作(动作401),该GC对象引用被引用计数对象。例如,垃圾收集组件104可以确定引用128被移除,因此要在垃圾收集期间收回GC对象114。经过引用包装器117,GC对象114可以引用被引用计数对象111。方法400包括收集GC对象的动作(动作402)。例如,垃圾收集组件104可以收集GC对象114。
方法400包括在结束释放GC对象之前通知被引用计数对象关于该GC对象已经被收集的动作(403)。例如,分析模块103可以在结束释放GC对象114之前向被引用计数对象111发送通知131。在一些实施例中,也在异步地移除到被引用计数对象的引用之前发送通知131。方法400包括响应于通知,断开从另一被引用计数对象到该被引用计数对象的弱引用的动作(动作404)。例如,可以响应于通知131断开弱引用129。
方法400包括继续垃圾收集以确定是否可以收回任何另外部分的系统资源的动作(动作405)。例如,垃圾收集组件104可以继续循环图109的垃圾收集。
其他附加实施例包括一个被引用计数对象请求到另一被引用计数对象的GC引用。也就是说,一个被引用计数对象可以请求创建CW,该CW引用到另一被引用计数对象的RW。请求CG引用可以是有用的,其有意地创建循环但却不引起泄露。
另外附加实施例包括被引用计数对象请求GC对象移除其对该被引用计数对象的引用。也就是说,可以是GC对象被配置来在结束期间释放其对被引用计数对象的引用,但在这种请求的情况下,释放可能立即发生。
本发明可以以其他特定形式实现而不背离其宗旨或基本特性。所描述的实施例无论从哪一方面来看都应当认为仅仅是说明性而非限制性的。本发明的范围因此由所附权利要求书而非前面的说明书指示。落入权利要求书的含义和等同范围内的所有变化都应被包括在其范围内。

Claims (10)

1.一种用于在计算机系统上同步来自被计数对象图的引用信息与被垃圾收集对象图以准备尝试收回系统资源的方法,该计算机系统包括一个或更多个处理器和系统内存,该计算机系统运行分配各部分系统内存以存储对象的应用,系统内存包括被计数对象图和被垃圾收集对象图,被计数对象图包括其生命期根据引用计数管理的一个或更多个被引用计数对象,被垃圾收集对象图包括其生命期根据垃圾收集管理的一个或更多个GC对象,被引用计数对象通过被计数包装器引用GC对象,GC对象通过引用包装器引用被引用计数对象,该方法包括:
确定要执行垃圾收集的动作;
响应于所述确定并且在执行垃圾收集之前:
确定该被计数包装器能够从该引用包装器经由被计数对象图到达的动作;和
保护通过被计数包装器引用的该GC对象的生命期的动作;以及
执行垃圾收集以确定是否能够收回任何分配的系统资源的动作,垃圾收集考虑由该引用包装器有效引用的该GC对象。
2.如权利要求1所述的方法,还包括在垃圾收集后移除该引用包装器与该GC对象之间的引用的动作。
3.如权利要求1所述的方法,其中保护通过被计数包装器引用的该GC对象的生命期的动作包括创建该GC对象关于该引用包装器的相关性的动作。
4.如权利要求1所述的方法,其中确定该被计数包装器能够从该引用包装器经由被计数对象图到达的动作包括分析模块确定该被计数包装器能够从该引用包装器经由被计数对象图到达的动作。
5.如权利要求1所述的方法,还包括确定该被计数包装器间接引用该GC对象的动作。
6.如权利要求1所述的方法,还包括确定该被计数包装器直接引用该GC对象的动作。
7.如权利要求1所述的方法,其中执行垃圾收集以确定是否能够收回任何分配的系统资源的动作包括移除一个或更多个对象以收回系统内存的动作。
8.一种用于在计算机系统上确定如何引用被引用计数对象以准备尝试收回系统资源的方法,该计算机系统包括一个或更多个处理器和系统内存,该计算机系统运行分配各部分系统内存以存储对象的应用,系统内存包括被计数对象图和被垃圾收集对象图,被计数对象图包括其生命期根据引用计数管理的一个或更多个被引用计数对象,被垃圾收集对象图包括其生命期根据垃圾收集管理的一个或更多个GC对象,被引用计数对象通过被计数包装器引用GC对象,GC对象通过引用包装器引用被引用计数对象,该方法包括:
确定要执行垃圾收集的动作;
响应于所述确定并且在实施垃圾收集之前:
确定被引用计数对象通过指定类型的引用的可到达性的动作;和
基于该指定类型的引用访问关于垃圾收集的信息的动作;以及
执行垃圾收集以确定是否能够收回任何分配的系统资源的动作,垃圾收集考虑当确定是否要收回该被引用计数对象时访问的信息。
9.如权利要求8所述的方法,其中确定被引用计数对象通过指定类型的引用的可到达性的动作包括确定该被引用计数对象可通过标准引用到达。
10.如权利要求8所述的方法,其中确定被引用计数对象通过指定类型的引用的可到达性的动作确定该被引用计数对象可通过被跟踪引用到达。
CN201210354921.9A 2011-09-09 2012-09-10 在循环图中管理对象生命期 Active CN102999328B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201161533134P 2011-09-09 2011-09-09
US61/533134 2011-09-09
US13/598,247 US9053017B2 (en) 2011-09-09 2012-08-29 Managing object lifetime in a cyclic graph
US13/598247 2012-08-29

Publications (2)

Publication Number Publication Date
CN102999328A true CN102999328A (zh) 2013-03-27
CN102999328B CN102999328B (zh) 2016-02-24

Family

ID=47830782

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210354921.9A Active CN102999328B (zh) 2011-09-09 2012-09-10 在循环图中管理对象生命期

Country Status (7)

Country Link
US (2) US9053017B2 (zh)
EP (1) EP2754054B1 (zh)
JP (1) JP6087928B2 (zh)
KR (2) KR101983413B1 (zh)
CN (1) CN102999328B (zh)
HK (1) HK1183533A1 (zh)
WO (1) WO2013036701A2 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103226476A (zh) * 2013-05-20 2013-07-31 张永强 垃圾对象检测方法和装置
CN105320567A (zh) * 2014-03-12 2016-02-10 奥普塔姆软件股份有限公司 用于有效资源回收的延迟损毁
CN107908567A (zh) * 2017-11-27 2018-04-13 腾讯科技(深圳)有限公司 一种Java对象引用方法、装置和介质
CN108073461A (zh) * 2016-11-11 2018-05-25 腾讯科技(深圳)有限公司 内存泄漏调试方法及装置
CN110597737A (zh) * 2019-08-22 2019-12-20 腾讯音乐娱乐科技(深圳)有限公司 数据处理方法、装置、存储介质及电子设备

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9053017B2 (en) 2011-09-09 2015-06-09 Microsoft Technology Licensing, Llc Managing object lifetime in a cyclic graph
US10438253B2 (en) 2015-11-29 2019-10-08 International Business Machines Corporation Reuse of computing resources for cloud managed services
US10223163B2 (en) 2016-07-14 2019-03-05 Microsoft Technology Licensing, Llc Workflow-based object destruction
US9959194B1 (en) 2017-03-08 2018-05-01 Microsoft Technology Licensing, Llc Indexing a trace by insertion of memory snapshots for replay responsiveness
US10185645B2 (en) 2017-03-08 2019-01-22 Microsoft Technology Licensing, Llc Resource lifetime analysis using a time-travel trace
US9983978B1 (en) 2017-03-08 2018-05-29 Microsoft Technology Licensing, Llc Querying an indexed time-travel trace
US9934127B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of key frames for replay responsiveness
US9934126B1 (en) 2017-03-08 2018-04-03 Microsoft Technology Licensing, Llc Indexing a trace by insertion of reverse lookup data structures
US9940369B1 (en) 2017-03-08 2018-04-10 Microsoft Technology Licensing, Llc Searching an indexed time-travel trace
CN108804337A (zh) * 2017-05-04 2018-11-13 华为技术有限公司 内存垃圾回收的方法、装置及计算机存储介质
US10282274B2 (en) 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations
US10558564B2 (en) 2017-09-28 2020-02-11 Hewlett Packard Enterprise Development Lp Pointers in a memory managed system
US11468312B2 (en) * 2018-02-02 2022-10-11 Samsung Electronics Co., Ltd. Memory management for machine learning training on GPU
KR102194413B1 (ko) * 2020-06-18 2020-12-23 인터와이즈 주식회사 역방향 경로 탐색을 이용한 혼합형 가비지 컬렉션 방법 및 이를 이용하는 가비지 컬렉션 시스템
KR102453983B1 (ko) * 2021-12-14 2022-10-31 인터와이즈 주식회사 생존 경로 정보 기반 가비지 컬렉션 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182107B1 (en) * 1997-06-03 2001-01-30 Object Technology Licensing Corporation Management of reference object lifetimes in object oriented programs
US20020129343A1 (en) * 2000-12-28 2002-09-12 International Business Machines Corporation Estimation of object lifetime using static analysis
US20030191783A1 (en) * 2002-04-03 2003-10-09 Sun Microsystems, Inc., A Delaware Corporation Fast lifetime analysis of objects in a garbage-collected system
US6879991B2 (en) * 2000-12-11 2005-04-12 International Business Machines Corporation Synchronous collection of cyclic garbage in reference counting systems
CN101046755A (zh) * 2006-03-28 2007-10-03 郭明南 一种计算机自动内存管理的系统及方法

Family Cites Families (31)

* 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
US5920876A (en) 1997-04-23 1999-07-06 Sun Microsystems, Inc. Performing exact garbage collection using bitmaps that identify pointer values within objects
GB9721659D0 (en) 1997-10-14 1997-12-10 Philips Electronics Nv Space-limited marking structure for tracing garbage collectors
JPH11232162A (ja) * 1998-02-19 1999-08-27 Fujitsu Ltd ガベージコレクション方法
US6421690B1 (en) 1998-04-30 2002-07-16 Honeywell International Inc. Computer memory management system
GB9813266D0 (en) 1998-06-20 1998-08-19 Koninkl Philips Electronics Nv Stored data object marking for garbage collectors
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6185107B1 (en) 1998-12-23 2001-02-06 Raytheon Company MEMS based tile assemblies and methods of fabrication
GB9906629D0 (en) * 1999-03-23 1999-05-19 Koninkl Philips Electronics Nv Memory reclamation method
US6453463B1 (en) 1999-06-07 2002-09-17 Sun Microsystems, Inc. Method and apparatus for providing finer marking granularity for fields within objects
US6363403B1 (en) 1999-06-30 2002-03-26 Lucent Technologies Inc. Garbage collection in object oriented databases using transactional cyclic reference counting
US6502111B1 (en) 2000-07-31 2002-12-31 Microsoft Corporation Method and system for concurrent garbage collection
US6874074B1 (en) 2000-11-13 2005-03-29 Wind River Systems, Inc. System and method for memory reclamation
US6883172B1 (en) 2001-03-29 2005-04-19 Microsoft Corporation System and method for bridging managed and unmanaged object systems by utilizing an interface wrapper to facilitate transparent communications
JP4041347B2 (ja) * 2001-05-29 2008-01-30 松下電器産業株式会社 ガベージコレクション装置及びガベージコレクション方法
US6662274B2 (en) 2001-06-20 2003-12-09 Intel Corporation Method for using cache prefetch feature to improve garbage collection algorithm
US6735680B2 (en) 2002-05-24 2004-05-11 Sun Microsystems, Inc. Method and apparatus for deleting objects from memory within a smart card
US7092978B2 (en) 2003-02-24 2006-08-15 Sun Microsystems, Inc. Space-efficient, depth-first parallel copying collection technique making use of work—stealing on the same structures that maintain the stack of items to be scanned
US7451168B1 (en) 2003-06-30 2008-11-11 Data Domain, Inc. Incremental garbage collection of data in a secondary storage
US7315873B2 (en) 2003-07-15 2008-01-01 International Business Machines Corporation Depth counter used to reduce number of items to consider for loop detection in a reference-counting storage reclamation program
US7251671B2 (en) 2004-03-26 2007-07-31 Intel Corporation Method and system for garbage collection wherein resetting the mark/allocation bit, and switching the mark/allocation bit to the mark bit to perform marking and scanning of objects using the identified object as a root object and providing mark/allocation bit information being displayed at the client
US7444484B2 (en) 2004-06-24 2008-10-28 International Business Machines Corporation Method and system for determining memory usage of a heap
US7631024B2 (en) 2006-01-03 2009-12-08 Sun Microsystems, Inc. Method and apparatus for facilitating mark-sweep garbage collection with reference counting
US7565386B2 (en) 2006-02-10 2009-07-21 Microsoft Corporation Reference-counting subsumption analysis
US7512745B2 (en) 2006-04-28 2009-03-31 International Business Machines Corporation Method for garbage collection in heterogeneous multiprocessor systems
US8589341B2 (en) 2006-12-04 2013-11-19 Sandisk Il Ltd. Incremental transparent file updating
US9785549B2 (en) 2007-04-27 2017-10-10 Microsoft Technology Licensing, Llc Managing object lifetime for native/managed peers
US7987215B2 (en) * 2008-04-22 2011-07-26 Microsoft Corporation Efficiently marking objects with large reference sets
US8327109B2 (en) * 2010-03-02 2012-12-04 Advanced Micro Devices, Inc. GPU support for garbage collection
US8621150B2 (en) * 2010-04-09 2013-12-31 International Business Machines Corporation Data placement optimization using data context collected during garbage collection
US9053017B2 (en) 2011-09-09 2015-06-09 Microsoft Technology Licensing, Llc Managing object lifetime in a cyclic graph

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182107B1 (en) * 1997-06-03 2001-01-30 Object Technology Licensing Corporation Management of reference object lifetimes in object oriented programs
US6879991B2 (en) * 2000-12-11 2005-04-12 International Business Machines Corporation Synchronous collection of cyclic garbage in reference counting systems
US20020129343A1 (en) * 2000-12-28 2002-09-12 International Business Machines Corporation Estimation of object lifetime using static analysis
US20030191783A1 (en) * 2002-04-03 2003-10-09 Sun Microsystems, Inc., A Delaware Corporation Fast lifetime analysis of objects in a garbage-collected system
CN101046755A (zh) * 2006-03-28 2007-10-03 郭明南 一种计算机自动内存管理的系统及方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103226476A (zh) * 2013-05-20 2013-07-31 张永强 垃圾对象检测方法和装置
CN103226476B (zh) * 2013-05-20 2016-06-08 张永强 垃圾对象检测方法和装置
CN105320567A (zh) * 2014-03-12 2016-02-10 奥普塔姆软件股份有限公司 用于有效资源回收的延迟损毁
CN108073461A (zh) * 2016-11-11 2018-05-25 腾讯科技(深圳)有限公司 内存泄漏调试方法及装置
CN108073461B (zh) * 2016-11-11 2021-01-19 腾讯科技(深圳)有限公司 内存泄漏调试方法及装置
CN107908567A (zh) * 2017-11-27 2018-04-13 腾讯科技(深圳)有限公司 一种Java对象引用方法、装置和介质
CN110597737A (zh) * 2019-08-22 2019-12-20 腾讯音乐娱乐科技(深圳)有限公司 数据处理方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN102999328B (zh) 2016-02-24
HK1183533A1 (zh) 2013-12-27
KR20190058706A (ko) 2019-05-29
EP2754054A2 (en) 2014-07-16
US9613073B2 (en) 2017-04-04
KR20140059801A (ko) 2014-05-16
WO2013036701A2 (en) 2013-03-14
EP2754054A4 (en) 2015-02-11
US20130066927A1 (en) 2013-03-14
JP2014529142A (ja) 2014-10-30
JP6087928B2 (ja) 2017-03-01
KR102074113B1 (ko) 2020-02-05
EP2754054B1 (en) 2018-06-27
US20150269196A1 (en) 2015-09-24
KR101983413B1 (ko) 2019-05-29
US9053017B2 (en) 2015-06-09
WO2013036701A3 (en) 2013-05-10

Similar Documents

Publication Publication Date Title
CN102999328A (zh) 在循环图中管理对象生命期
EP3382551B1 (en) Distributed hardware tracing
CN100578453C (zh) 用于多线程的线程管理的方法和装置
CN102576331B (zh) 用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法
US10083113B2 (en) Scheme for determining data object usage in a memory region
CN109857556B (zh) 内存回收方法及装置、存储介质和电子设备
CN103150259B (zh) 一种内存回收方法和装置
CN104580338A (zh) 一种业务处理方法、系统及设备
CN1853165A (zh) 用于多线程的编译器创建辅助线程的方法和装置
CN111258921B (zh) 垃圾内存回收方法及装置、电子设备、存储介质
CN103123604A (zh) 跟踪数据处理系统的内存使用的方法
CN102866920A (zh) 主从结构分布式视频处理系统及其调度方法
US10324784B2 (en) Mitigating crashes of an application server executing a monitoring agent
CN105095495B (zh) 一种分布式文件系统缓存管理方法和系统
CN105353987A (zh) 一种文件处理方法及装置
CN111767199B (zh) 一种基于批处理作业的资源管理方法、装置、设备及系统
CN104462940A (zh) 计算机usb接口的监控方法和装置
CN107632890B (zh) 一种数据流体系结构中动态节点分配方法和系统
CN111090627B (zh) 基于池化的日志存储方法、装置、计算机设备及存储介质
CN103309698A (zh) 虚拟机内存管理系统及方法
KR20160100626A (ko) 실제 자원들을 이용하여 악성 코드를 실행하는 컴퓨팅 장치, 악성 코드의 정보를 관리하는 서버 시스템, 및 그것들을 포함하는 전자 시스템
CN215006642U (zh) 一种多节点协作的计算机病毒分析系统
CN115022243B (zh) 数据流量控制方法、装置、系统、电子设备及存储介质
CN113535412B (zh) 用于跟踪锁的方法、设备和计算机程序产品
CN105045660A (zh) 一种动态回收资源的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1183533

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150709

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

Effective date of registration: 20150709

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1183533

Country of ref document: HK