【技术实现步骤摘要】
本申请是申请日为2012.4.6,申请号为201280020077.4(国际申请号为PCT/US2012/032639),名为“用于存储器管理的保守垃圾收集和经标记的整数”申请的分案申请。
技术介绍
根据与一些常规系统有关的
技术介绍
,应当注意的是,计算设备具有传统上已存储的信息和相关联的应用。为了这些目的,实现有效的存储器管理方案对于实现增加的计算性能而言是合乎需要的。自动存储器管理方案中的开发与手动存储器管理方案相比是特别合乎需要的。垃圾收集器算法例如是自动存储器管理方案,其尝试回收不再被特定程序使用的对象所占用的存储器。跟踪式垃圾收集器是最常见类型的垃圾收集器。跟踪式垃圾收集器首先确定哪些对象是可到达的(或者,可能是可到达的),并然后丢弃所有剩余的对象。可到达对象可以被定义成如下的对象:针对所述对象,在程序环境中存在可直接地或通过来自其他可到达对象的引用而通向其的某个变量。更确切而言,对象一般可以以两种方式来到达。首先,假设被称为根的一组区别(distinguished)的对象的是可到达的。通常,这些对象包括从调用栈内的任何地方被引用的对象(也就是说,当前正被调用的函数中的所有局部变量和参数)以及任何全局变量。其次,从可到达对象被引用的任何对象本身被认为是可到达的。在具有引用类型和未装箱值类型两者的语言中,常规垃圾收集器的一个难题是,垃圾收集器区分调用栈上的哪些变量是常规值(例如整数),并且哪些是引用(例如指针)。这样的区分将在这样的系统中有益于区分目的,因为整数和引用在其他情况下在表示在存储器中时看上去是相似的。就此而言,垃圾收集器将能够使用该区分来判定是 ...
【技术保护点】
一种系统,包括:至少一个处理器;以及至少一个存储器,包括:包括一个或多个根对象的调用栈,每个根对象与整数表示或指针表示中的一个相关联;与所述调用栈相关联的对象图,所述对象图包括被标记的整数表示或未经标记的指针表示中的至少一个,被标记的整数表示可与未经标记的指针表示区分开来;以及可在所述至少一个处理器上执行的组件,包括:扫描组件,标识出在调用栈中的所述一个或多个根对象;标记组件,标记在所述对象图中至少一个整数表示;跟踪组件,执行对所述一个或多个根对象中的至少一个到对应的存储器位置的第一跟踪,执行对与未经标记的指针表示相关联的存储器位置的后续跟踪并跳过对与由所述对象图所标识的经标记的整数表示相关联的存储器位置的所述后续跟踪;以及回收组件,释放分配给所述调用栈不可到达的一组对象的存储器。
【技术特征摘要】
2011.04.25 US 13/093,7241.一种系统,包括:至少一个处理器;以及至少一个存储器,包括:包括一个或多个根对象的调用栈,每个根对象与整数表示或指针表示中的一个相关联;与所述调用栈相关联的对象图,所述对象图包括被标记的整数表示或未经标记的指针表示中的至少一个,被标记的整数表示可与未经标记的指针表示区分开来;以及可在所述至少一个处理器上执行的组件,包括:扫描组件,标识出在调用栈中的所述一个或多个根对象;标记组件,标记在所述对象图中至少一个整数表示;跟踪组件,执行对所述一个或多个根对象中的至少一个到对应的存储器位置的第一跟踪,执行对与未经标记的指针表示相关联的存储器位置的后续跟踪并跳过对与由所述对象图所标识的经标记的整数表示相关联的存储器位置的所述后续跟踪;以及回收组件,释放分配给所述调用栈不可到达的一组对象的存储器。2.如权利要求1所述的系统,其特征在于,所述回收组件被配置为将可到达对象保存在堆的原始存储位置中。3.如权利要求2所述的系统,其特征在于,所述回收组件被配置为根据所述堆内的固定的一组边界来维护堆对象的分隔。4.如权利要求1所述的系统,其特征在于,所述回收组件被配置为把被所述调用栈调用的对象放置到堆上,并且其中所述回收组件还被配置为基于所述堆的大小是否超过阈值来发起垃圾收集算法。5.如权利要求1所述的系统,其特征在于,所述调用栈与一脚本的编译相关联。6.如权利要求1所述的系统,其特征在于,所述调用栈与一对象模型的修改相关联。7.一种方法,包括:在与调用栈相关联的对象图中标记整数表示,所述调用栈包括一个或多个根对象,所述对象图包括与被标记的整数表示相关联的至少一个根对象和与未经标记的指针表示相关联的至少一个根对象;在所述调用栈的执行期间生成对象的堆,所述对象的堆包括调用栈的经执行部分中的根对象;执行在所述调用栈的未经执行部分中包括的未经执行的根对象到所述堆上的相应存储器位置的第一跟踪;执行对由所述对象图所标识的未经标记的指针表示相关联的存储器位置的后续跟踪,同时跳过对由所述对象图所标识的经标记的整数表示的所述后续跟踪;以及清除堆上的与所述调用栈的未经执行部分中的一个或多个根对象不可到达的对象相对应的存储器位置。8.如权利要求7所述的方法,其特征在于,进一步包括:在所述调用栈的执行期间监视所述堆的大小,并且清除与对象相对应的存储器位置是由所述堆的大小超出阈值而触发的。9.如权利要...
【专利技术属性】
技术研发人员:S·卢科,C·CC·曼,
申请(专利权)人:微软技术许可有限责任公司,
类型:发明
国别省市:美国;US
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。