[发明专利]在循环图中管理对象生命期有效
申请号: | 201210354921.9 | 申请日: | 2012-09-10 |
公开(公告)号: | CN102999328A | 公开(公告)日: | 2013-03-27 |
发明(设计)人: | M·J·希尔伯格;R·克里什纳斯瓦米 | 申请(专利权)人: | 微软公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 中国专利代理(香港)有限公司 72001 | 代理人: | 董宁;汪扬 |
地址: | 美国华*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 循环 管理 对象 生命 | ||
背景技术
计算机系统和相关技术影响社会的许多方面。事实上,计算机系统处理信息的能力已经改变了我们生活和工作的方式。计算机系统现在普遍执行大量任务(例如,文字处理、日程、记账等),这些任务在计算机系统出现之前是手工执行的。最近,计算机系统已经相互耦合以及耦合到其他电子设备,形成有线和无线计算机网络,通过这些网络计算机系统和其他电子设备可以传输电子数据。相应地,许多计算任务的执行被分布在许多不同的计算机系统和/或许多不同的计算环境中。
一些编程环境(例如C++)使用引用计数作为确定对象何时不再被引用并从而可以释放用于存储对象的内存的机制。如果对象不能直接被引用,通过将对象从内存移除,从而管理对象的生命期。当一个对象引用另一对象时,增加被引用对象的引用计数。当一个对象引用另一对象时,该对象的引用计数减少。当一个对象的引用计数达到零时,它是不可访问的,并且可以将其毁灭。
然而,引用计数相对不复杂,可能导致内存泄露(即,未使用的和有可能不可访问的对象继续消耗内存)。例如,可能两个对象相互引用但却未被任何其他对象引用,产生循环。当出现循环时,引用计数可能无法确定这两个对象仅仅是相互引用而却没有被其他引用。因此,这两个对象的内存未被释放,引起内存泄露。
其他编程环境(例如C#)使用垃圾收集作为确定对象何时不再被引用并从而可以释放用于存储对象的内存的机制。垃圾收集通过查找不能被直接或者间接引用的对象并且移除它们来管理对象的生命期。垃圾收集通过考虑到间接引用而解决了与循环相关的问题。
一些编程环境利用引用计数对象和垃圾收集对象。例如,开发者可能希望利用使用不同对象生命期管理技术的不同编程语言。在这些混合的编程环境中,被引用计数对象可以引用垃圾收集对象和/或垃圾收集对象可以引用计数对象。然而,垃圾收集系统可能无法通过被引用计数对象跟踪间接引用。因此,在混合的编程环境中仍然可能出现内存泄露。
发明内容
本发明扩展到在循环图中管理对象生命期的方法、系统和计算机程序产品。本发明的实施例包括例如从混合不同资源收回技术的对象图中准备收回以及收回分配的系统资源。在一些实施例中,计算机系统确定要实施垃圾收集。响应于确定要实施垃圾收集,检测根据垃圾收集管理的对象与根据引用计数管理的对象之间的引用。此外对任何检测到的引用确定引用类型(例如直接、间接、标准、被跟踪、弱化等)。实施垃圾收集以确定是否可以收回任何分配的系统资源。作为系统资源收回确定的一部分,垃圾收集考虑根据垃圾收集管理的对象与根据引用计数管理的对象之间引用和引用类型。
一般而言,对象可以请求创建和/或移除到和/或来自其他对象的引用。例如,当要收集对象时(例如为了收回系统资源),可以在要被收集的对象从图中移除之前通知从要被收集的对象引用的其他对象。响应于该通知,被引用对象可以断开从该被引用对象到再一对象的弱化引用。垃圾收集然后可以继续来确定是否可以收回任何另外分配的系统资源。继续的垃圾收集考虑断开从另一对象到再一对象的弱化引用。
提供本发明内容来以简化的形式介绍一系列概念,这些概念下面在具体实施方式中进一步描述。本发明内容并不意图标识所要求保护的主题的关键特征或基本特征,也不意图用作帮助确定所要求保护的主题的范围。
本发明的额外特征和优点将会在下面的描述中阐述,并且通过描述而部分地变得明显,或者可以通过本发明的实践而习得。本发明的特征和优点可以通过所附权利要求中特别指出的装置和组合而实现和获得。本发明的这些和其他特征通过下面描述和所附权利要求将变得充分清楚,或者可以通过下面阐述的本发明的实践习得。
附图说明
为了描述可以获得本发明的上述和其他优点和特征的方式,将参照附图中所示的其特定实施例来呈现对上面简要描述的本发明的更具体描述。理解这些附图仅仅描绘本发明的典型实施例,因此不应当被认为是限制其范围,将通过使用附图以额外的特性和细节描述和说明本发明,在附图中:
图1A示出促进在循环图中管理对象生命期的示例计算机架构。
图1B示出示例循环图。
图1C示出示例循环图。
图1D示出示例循环图。
图1E示出示例循环图。
图1F示出示例循环图。
图2示出用于同步来自被计数对象图的引用信息与被垃圾收集对象图以准备尝试收回系统资源的示例方法的流程图。
图3示出用于确定如何引用被引用计数对象以准备尝试收回系统资源的示例方法的流程图。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于微软公司,未经微软公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210354921.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:计频器
- 下一篇:一种电动叉车属具的控制保护装置