【技术实现步骤摘要】
【国外来华专利技术】硬件辅助的对象存储器迁移本专利技术的背景
本专利技术涉及计算系统,并且更具体地,涉及使用已经被知晓为“垃圾收集”的技术的计算机系统的存储器管理。
技术介绍
在计算机系统领域中,在分配和管理存储器的任务上已经付出了相当大的努力。通常,存储器可以被静态地或动态地分配给数据对象(数据对象也可以被称为数据结构或记录)。一些计算机语言可能要求为程序中定义的所有变量静态地(例如在编译时)分配存储器。这种静态存储器分配可能使得难以在多个应用之间共享可用的存储器空间,尤其是对于长期存活的应用。当平台提供对动态存储器分配的支持时,例如当要分配给给定对象的存储器空间仅在运行时才确定时,遵守空间限制可能更容易。动态分配相对于静态分配具有许多优点。一个这样的优点是运行时系统能够使分配适于运行时条件。例如,程序员可以指定仅响应于特定运行时条件才为给定对象分配空间。C语言库函数malloc()和C++操作符new可以用于此目的。相反,程序员可以指定先前分配给给定对象的存储器可以被回收以用于重用的条件。C语言库函数free()和C++操作符delete导致这种存储器回收。因为动态分配提供了存储器重用,因此它便于生成大型或长期存活的应用,这些应用在其生命周期过程中可以采用对象,如果这些对象被静态绑定到存储器位置,那么这些对象的总存储器需求将大大超过可用的存储器资源。然而,必须小心地执行动态存储器的分配和回收,尤其是对于长期存活的应用。如果应用无法回收未使用的存储器——或者更糟的是,丢失了对动态分配的存储器段的地址的跟踪——那么该应用的存储器需求可能随时间增长而超过系统的可用存储器。这种错 ...
【技术保护点】
一种计算系统,包括:存储器;以及耦合到所述存储器的处理器,其中作为垃圾收集过程的一部分,所述处理器被配置为:识别所述存储器的第一区域中的用于迁移的第一对象;通过将与所述第一对象相关联的第一版本号改变为指示为对象迁移保留的值的第二版本号,标记用于从所述存储器的所述第一区域迁移到所述存储器的第二区域的所述第一对象;在所述第一区域中的所述第一对象被迁移到所述第二区域之前,检测对所述第一对象的访问,其中所述访问包括所述第一版本号;将所述第一版本号与所述第二版本号进行比较;响应于检测到所述第一版本号与所述第二版本号匹配,允许对所述第一对象的所述访问;响应于检测到所述第一版本号与所述第二版本号不匹配,停止对所述第一对象的所述访问;将所述第一对象从所述第一区域移动到所述第二区域;以及响应于完成所述第一对象到所述第二区域的迁移,从所述第一对象中移除所述第二版本号。
【技术特征摘要】
【国外来华专利技术】2014.09.27 US 62/056,524;2015.01.15 US 14/598,1661.一种计算系统,包括:存储器;以及耦合到所述存储器的处理器,其中作为垃圾收集过程的一部分,所述处理器被配置为:识别所述存储器的第一区域中的用于迁移的第一对象;通过将与所述第一对象相关联的第一版本号改变为指示为对象迁移保留的值的第二版本号,标记用于从所述存储器的所述第一区域迁移到所述存储器的第二区域的所述第一对象;在所述第一区域中的所述第一对象被迁移到所述第二区域之前,检测对所述第一对象的访问,其中所述访问包括所述第一版本号;将所述第一版本号与所述第二版本号进行比较;响应于检测到所述第一版本号与所述第二版本号匹配,允许对所述第一对象的所述访问;响应于检测到所述第一版本号与所述第二版本号不匹配,停止对所述第一对象的所述访问;将所述第一对象从所述第一区域移动到所述第二区域;以及响应于完成所述第一对象到所述第二区域的迁移,从所述第一对象中移除所述第二版本号。2.如权利要求1所述的计算系统,其中所述处理器包括存储队列,所述存储队列包括多个条目,其中所述多个条目中的每个条目被配置为存储以下中的至少一个或多个:线程标识符ID、版本号以及存储器损坏检测MCD启用状态,所述存储器损坏检测MCD启用状态指示对于由线程ID识别出的给定线程是否启用了MCD检查。3.如权利要求1所述的计算系统,其中所述第一区域是被定义为存储器损坏检测MCD区域的堆区域。4.如权利要求1所述的计算系统,其中所述处理器被配置为利用存储器损坏检测MCD存储指令来改变与所述第一对象相关联的版本号,其中MCD存储指令仅修改目标地址的版本号并且使所述目标地址的应用数据保持不变。5.如权利要求4所述的计算系统,其中所述处理器被配置为通过检测所述访问的版本号和所述第一对象的版本号之间的失配来确定所述访问发生在所述第一对象被标记用于迁移之后。6.如权利要求1所述的计算系统,其中为了移除所述第二版本号,所述处理器被配置为将所述第二版本号改变为所述第一版本号。7.如权利要求1所述的计算系统,其中所述处理器还被配置为响应于在所述第一对象被标记用于迁移之后检测到所述访问而触发捕捉例程来解决依赖性。8.一种用于处理器的方法,所述方法包括:发起垃圾收集过程,其中所述过程包括:识别存储器的第一区域中的用于迁移的第一对象;通过将与所述第一对象相关联的第一版本号改变为指示为对象迁移保留的值的第二版本号,标记用于从所述存储器的所述第一区域迁移到所述存储器的第二区域的所述第一对象;在所述第一区域中的所述第一对象被迁移到所述第二区域之前,检测对所述第一对象的访问,其中所述访问包括所述第一版本号;将所述第一版本号与所述第二版本号进行比较;响应于检测到所述第一版本号与所述第二版本号匹配,允许对所述第一对象的所述访问;响应于检测到所述第一版本号与所述第二版本号不匹配,停止对所述第一对象的所述访问;将所述第一对象从所述第一区域移动到所述第二区域;以及响应于完成所述第一对象到所述第二区域的迁移,...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。