[发明专利]存储器管理的系统中的指针有效
申请号: | 201811139717.9 | 申请日: | 2018-09-28 |
公开(公告)号: | CN109582590B | 公开(公告)日: | 2023-07-14 |
发明(设计)人: | L·吉德拉;E·R·柯申鲍姆 | 申请(专利权)人: | 慧与发展有限责任合伙企业 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 北京市金杜律师事务所 11256 | 代理人: | 王茂华 |
地址: | 美国德*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 存储器 管理 系统 中的 指针 | ||
示例涉及存储器管理的系统中的指针。垃圾数据收集系统中的垃圾数据收集线程指示垃圾数据收集系统已经进入了标记阶段,垃圾数据收集系统管理一堆存储器。将与增变线程相关联的转换状态变量从第一转换状态值修改为第二转换状态值。确定转换状态变量不包含第二转换状态值。垃圾数据收集线程确定指针集合为空。尝试由第三指示来指示标记阶段已经结束,其中,使用第三指示进行指示包括确定没有属于增变线程集合的增变线程已经提供了指出指示增变线程打算将指针添加到指针集合的第二指示。垃圾数据收集线程在尝试成功时确定标记阶段已经结束。垃圾数据收集线程在尝试成功时由第四指示来指示垃圾数据收集系统仍然处于标记阶段中。
背景技术
垃圾数据收集是存储器管理的类型,其中垃圾数据收集器回收由不再使用的对象所占用的存储器。垃圾数据收集可以被某些编程语言使用和/或要求。在采用垃圾数据收集的系统中,可以在由垃圾数据收集器管理的堆区上分配一些对象。堆区可以是其中分配的对象(例如,记录、结构、实例,或者数据值)存在的存储器的一部分。当对象被分配时,在堆区上识别存储器地址的未使用范围(或以另外方式表征的存储器或存储区域),并且存储器的该区域用于创建对象并且包含其数据。
垃圾数据收集器的作业是在可达的分配的对象与不可达的那些分配的对象之间进行区分,其中当可以使任何当前或未来执行程序代码访问对象或其数据时,对象被考虑为可达的。当不可以使任何执行程序代码访问对象或其数据时,对象被考虑为不可达的。当确定对象是不可达的时,垃圾数据收集器可以宣布它们占据的存储器区域未被分配并且将该存储器返回到分配器用于分配新的对象。该处理被称为对对象进行收集(垃圾数据收集)。
垃圾数据收集可以涉及确定根指针集合。根指针是指向存储在垃圾数据收集的堆区中的对象的指针,其中由垃圾数据收集器在一位置而不是在垃圾数据收集的堆区上观察到根指针本身。例如,可以在处理器寄存器中、在程序或线程堆栈上、在全局或线程局部变量或结构中,或者在垃圾数据收集的堆区之外的堆区内观察到指针。
垃圾数据收集可以包括从根指针开始确定可达的对象。如果对象被根指针或被包含在一些可达的对象中的指针所指,则可以将对象考虑为可达的。指针可以被考虑为强指针或弱指针。被作为根或被包含于可达的对象中的强指针指向的对象被考虑为可达的。对比起来,弱指针不影响其指向的对象的可达性。当对象没有来自可达的对象的指向其的强指针时,即使其被弱指针所指,将在随后的GC周期中对其进行垃圾数据收集。
附图说明
以下具体实施方式参考附图,其中:
图1是其中在存储器管理的系统中使用指针可以有用的示例系统的框图;
图2是用于在存储器管理的系统中使用指针的示例方法的流程图;
图3是用于穷举弱指针的示例方法的流程图;
图4是用于指示在清除阶段期间指派了弱指针的示例方法的流程图;
图5是用于指示在清除阶段期间指派了弱指针的另一个示例方法的流程图;
图6是用于执行GC线程和增变线程之间的握手操作的示例方法的流程图;
图7是用于处理弱指针的示例方法的框图;以及
图8是用于在存储器管理的系统中使用指针的示例系统的框图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于慧与发展有限责任合伙企业,未经慧与发展有限责任合伙企业许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811139717.9/2.html,转载请声明来源钻瓜专利网。