[发明专利]存储器管理有效

专利信息
申请号: 200880108492.9 申请日: 2008-09-04
公开(公告)号: CN101809545A 公开(公告)日: 2010-08-18
发明(设计)人: A·约翰逊 申请(专利权)人: 国际商业机器公司
主分类号: G06F12/02 分类号: G06F12/02
代理公司: 中国国际贸易促进委员会专利商标事务所 11038 代理人: 杜娟
地址: 美国*** 国省代码: 美国;US
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 存储器 管理
【说明书】:

技术领域

发明涉及计算机系统中的存储器管理。更具体地,本发明涉及作用域存储器(scoped memory)的垃圾收集(garbage collection)。 

背景技术

常常设计运行时环境中的存储器管理以便为软件工程师提供便利。由于这个原因,例如Java(Java是Sun微系统公司的注册商标)的运行时环境包括具有垃圾收集器的堆存储器(heap memory)。垃圾收集器是用于从存储器自动地识别并丢弃未使用的数据(例如对象)以便释放存储装置的运行时工具。 

垃圾收集是由现代计算机系统的效率提供的“奢侈品”,用于把软件工程师从通过编程来丢弃每一个未使用的对象的任务中解放出来。然而它存在一些缺点。一个这样的缺点是垃圾收集处理通常要求暂停执行用于访问堆的软件线程。这是因为当软件线程主动地分配并访问现有的或新的对象时,无法正常进行用于识别并丢弃未使用的对象的处理。为了使垃圾收集器有效地操作,在垃圾收集处理的持续期间,堆的状态最好是静态的且确定的。用于垃圾收集的线程的暂停持续时间取决于在堆中所存在的数据对象的数目和种类,并且可能在从短到察觉不到的持续时间到长到会被用户察觉的时段的范围内变动。因而垃圾收集处理可能导致具有不确定的频率和持续时间的延迟。这些缺点使垃圾收集运行时环境固有地不适用于依赖于执行的连续性和可预测性的软件。这种软件包括例如在监视和控制应用中使用的那些关键性实时应用,并且一般阻止这些应用访问垃圾收集存储器以便确保它们的连贯性和稳定性。 

为了解决垃圾收集堆存储器的这些缺点,运行时环境可以被适配 来使用作用域存储器区域(sloped memory area)。作用域存储器区域是适用于对象的分配和解除分配而没有垃圾收集堆的某些缺点的存储区域。软件线程可以进入作用域存储器区域,然后由该线程在所述作用域存储器区域内进行所有对象分配。所述线程还可以按照嵌套方式进入多个作用域存储器区域。例如,所述线程可以进入变为默认的分配区域的第二作用域存储器区域。在作用域图表(scope graph)中组织作用域存储器区域,每个作用域存储器区域具有一个父辈(parent),该父辈是先前进入的作用域存储器区域。第一作用域存储器区域具有原始的作用域存储器区域作为其父辈。 

为每个作用域存储器区域维护该区域中的多个活动线程的线程计数。与作用域图表耦合的线程计数表明作用域存储器区域(包括在所述作用域存储器区域中分配的任何对象)何时是可丢弃的。例如,当相关联的线程计数从一减到零并且作用域存储器区域不是任何其它作用域存储器区域的父辈时,该作用域存储器区域可以是可丢弃的。依照这种方式,作用域存储器区域向对象提供可供选择的分配空间(否则所述对象在垃圾收集运行时环境、例如Java中)。由于作用域存储器区域中的所有对象在按照存储器区域的线程使用和作用域图表的组织所定义的相同时间变得可被丢弃,所以使用这种作用域存储器区域可以解决在应用执行中由垃圾收集算法所导致的延迟和不确定性的问题。 

第一作用域存储器区域中的第一对象可以引用第二作用域存储器区域中的第二对象。然而,由于单独的作用域存储器区域可能变得可完全被丢弃,所以必须实施关于在不同作用域存储器区域中的对象之间的有效和无效引用的严格规则。这些规则必须保证父辈作用域存储器区域的寿命至少是其子辈作用域存储器区域的寿命,使得后辈存储区域中的对象可以可靠地引用先辈存储区域中的对象。依照这种方式,可以避免悬空引用(dangling reference)。这在“Efficient Memory-Reference Checks for Real-time Java”(Corsaro和Cytron,ACMSIGPLAN第38卷,2003年7月7日发行)”中有所描述。 

一个这样的规则是作用域存储器区域具有至多一个父辈。这被称为“单父辈规则”。单父辈规则规定不同线程进入作用域存储器区域的次序始终是相同的,这是因为线程进入作用域存储器区域的次序定义了作用域图表中的作用域存储器区域的结构。此外,在源作用域存储器区域中分配的源对象只能引用在相同或先辈作用域存储器区域中的目标对象。先辈作用域存储器区域是在源作用域存储器区域之前线程进入的存储区域。源作用域存储器区域被认为是具有相对于目标对象来说更靠内部的作用域。此准则确保了源对象总是在目标对象之前被解除分配。依照Java的实时规范(Bollella等人,Addison-Wesley,2000年),试图创建不满足该准则的引用一定会失败。因而,每当创建对目标对象的新引用时,必须以有效的方式检查所述准则。 

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/200880108492.9/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top