[发明专利]硬件辅助的对象存储器迁移有效
| 申请号: | 201580060952.5 | 申请日: | 2015-09-28 |
| 公开(公告)号: | CN107111548B | 公开(公告)日: | 2018-10-16 |
| 发明(设计)人: | Z·拉多维奇 | 申请(专利权)人: | 甲骨文国际公司 |
| 主分类号: | G06F12/02 | 分类号: | G06F12/02 |
| 代理公司: | 中国国际贸易促进委员会专利商标事务所 11038 | 代理人: | 边海梅 |
| 地址: | 美国加*** | 国省代码: | 美国;US |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 硬件 辅助 对象 存储器 迁移 | ||
用于结合处理器中的垃圾收集利用存储器版本指令和技术的系统和方法。计算系统可以执行硬件辅助的垃圾收集算法,以在存储器区域之间移动存活对象。可以利用特殊的存储指令来标记每个存储器区域的即将被迁移的存活对象。执行有用的工作的转变器可以被配置为在标记用于迁移的存储器区域上进行捕捉。
本发明的背景
技术领域
本发明涉及计算系统,并且更具体地,涉及使用已经被知晓为“垃圾收集”的技术的计算机系统的存储器管理。
背景技术
在计算机系统领域中,在分配和管理存储器的任务上已经付出了相当大的努力。通常,存储器可以被静态地或动态地分配给数据对象(数据对象也可以被称为数据结构或记录)。一些计算机语言可能要求为程序中定义的所有变量静态地(例如在编译时)分配存储器。这种静态存储器分配可能使得难以在多个应用之间共享可用的存储器空间,尤其是对于长期存活的应用。当平台提供对动态存储器分配的支持时,例如当要分配给给定对象的存储器空间仅在运行时才确定时,遵守空间限制可能更容易。
动态分配相对于静态分配具有许多优点。一个这样的优点是运行时系统能够使分配适于运行时条件。例如,程序员可以指定仅响应于特定运行时条件才为给定对象分配空间。C语言库函数malloc()和C++操作符new可以用于此目的。相反,程序员可以指定先前分配给给定对象的存储器可以被回收以用于重用的条件。C语言库函数free()和C++操作符delete导致这种存储器回收。因为动态分配提供了存储器重用,因此它便于生成大型或长期存活的应用,这些应用在其生命周期过程中可以采用对象,如果这些对象被静态绑定到存储器位置,那么这些对象的总存储器需求将大大超过可用的存储器资源。
然而,必须小心地执行动态存储器的分配和回收,尤其是对于长期存活的应用。如果应用无法回收未使用的存储器——或者更糟的是,丢失了对动态分配的存储器段的地址的跟踪——那么该应用的存储器需求可能随时间增长而超过系统的可用存储器。这种错误被知晓为“存储器泄漏”。当即使应用仍然维持对存储器的引用该应用也回收该存储器以用于重用时,会发生另一种错误。如果回收的存储器被重新分配用于不同目的,那么该应用可能不经意地以多种不一致的方式操纵同一存储器。这种错误被知晓为“悬空引用(danglingreference)”。
减少这种泄漏和相关错误的可能性的方式是以更自动的方式提供存储器空间回收。由系统使用的自动回收存储器空间的技术通常被称为垃圾收集。垃圾收集器通过回收它们不再认为是“存活”或“可达”的空间来操作(不可达的空间可以称为“垃圾”,这是本技术的名称来由)。由程序的全局变量表示的静态分配的对象一般被认为贯穿程序的生命周期是可达的。这样的对象通常不存储在垃圾收集器的受管理的存储器空间(例如,堆)中,但是它们可以包含对存储在垃圾收集器的受管理的存储器空间中的动态分配的对象的引用,并且这样的存储在垃圾收集器的受管理的存储器空间中的动态分配的对象被认为是可达的。显然,在处理器的调用栈中引用的对象是可达的,由寄存器内容引用的对象也是可达的。由任何可达对象引用的对象也是可达的。
垃圾收集器的使用是有利的,这是因为虽然针对特定代码序列工作的程序员在任何给定时间仅使用应用的局部知识就可以在大多数方面可靠地执行该程序员的任务,但是存储器分配和回收需要该程序的全局知识。具体而言,处理给定代码序列的程序员确实往往知道存储器的某个部分是否仍然被用于该代码序列,但是他很难知道应用的其余部分正在对该存储器做什么。通过追踪来自根集合的一些保守概念(例如,全局变量、寄存器和调用栈)的引用,自动垃圾收集器以有条理(methodical)的方式获得全局知识。通过使用垃圾收集器,程序员不用再担心应用的全局状态并且可以专注于更易于管理的局部状态问题。结果是更健壮的、没有悬空引用并且具有更少存储器泄漏的应用。
鉴于以上情况,期望用于执行垃圾收集的高效方法和机制。
发明内容
设想了用于结合垃圾收集利用存储器版本指令和技术的系统和方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于甲骨文国际公司,未经甲骨文国际公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201580060952.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于编程语言的封装系统
- 下一篇:处理器芯片、布局方法及访问数据的方法





