[发明专利]用于减少引用计数开销的系统和方法在审
申请号: | 201880010299.5 | 申请日: | 2018-02-07 |
公开(公告)号: | CN110249303A | 公开(公告)日: | 2019-09-17 |
发明(设计)人: | 王海川;马林;郑若黄;杨学军 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 引用 线程 计数器 全局引用 引用计数器 计数技术 存储器 跟踪 关联 分配 更新 进程 | ||
1.一种用于引用计数的设备,其特征在于,包括:
包含指令的非瞬时性存储器;
与所述存储器通信的一个或多个处理器,其中所述一个或多个处理器执行执行所述指令以进行以下操作,包括:
建立与锁关联的全局引用计数器,以计数引用所述存储器中分配的对象的进程的一个或多个线程;
所述线程中的每个线程使用相应的本地引用计数器跟踪所述线程对所述对象的每个引用;
每当一个或多个线程中的每个线程对所述对象的引用是对所述对象的初始引用或对所述对象的最终引用时,更新所述全局引用计数器。
2.根据权利要求1所述的设备,其特征在于,第一线程使用相应的本地引用计数器跟踪所述第一线程对所述对象的引用包括:
确定所述线程的所述引用是否是对所述对象的初始引用;
为响应确定对所述对象的引用是对所述对象的初始引用:
所述更新包括增加所述全局引用计数器并使用零值初始化所述本地引用计数器;
增加所述本地引用计数器,而不锁定所述本地引用计数器。
3.根据权利要求1至2中任一项所述的设备,其特征在于,第一线程使用相应的本地引用计数器跟踪所述第一线程对所述对象的引用包括:
减少所述本地引用计数器,而不锁定所述本地引用计数器;
确定所述本地引用计数器是否有零值;
为响应确定所述本地引用计数器具有非零值,所述更新包括减少所述全局引用计数器;
当所述全局引用计数器更新为零值时,从所述存储器释放所述对象。
4.根据权利要求1至3中任一项所述的设备,其特征在于,所述一个或多个线程中的第一线程对应于第一本地引用计数器,所述一个或多个线程中的第二线程对应于第二本地引用计数器,所述操作还包括:
当所述第一线程引用所述对象时增加所述第一本地引用计数器,当所述第一线程不再引用所述对象时减少所述第一本地引用计数器;
当所述第二线程引用所述对象时增加所述第二本地引用计数器,当所述第二线程不再引用所述对象时减少所述第二本地引用计数器;
当所述第一本地计数器和所述第二本地计数器具有零值时,从所述存储器释放所述对象并释放与所述全局引用计数器关联的所述锁。
5.根据权利要求1至4中任一项所述的设备,其特征在于,所述对应的本地引用计数器使用无锁引用计数。
6.根据权利要求1至5中任一项所述的设备,其特征在于,所述全局引用计数器的计数值等于所述一个或多个线程对所述存储器中的所述对象的引用数量。
7.根据权利要求4所述的设备,其特征在于,所述操作还包括:
更新所述对象的布局以包括所述全局引用计数器;
将所述对象的地址映射到所述对应的第一和第二本地引用计数器中每一个的本地地址。
8.根据权利要求7所述的设备,其特征在于,将所述对象的地址映射到所述第一和第二本地引用计数器中每一个的本地地址包括以下之一:
(1)通过更改关联的页面地址,将所述共享的对象地址映射到所述第一和第二本地引用计数器的地址;
(2)使用散列映射存储所述对象地址到所述关联引用计数器的本地地址的映射;
(3)当满足所述一个或多个线程的激活级别阈值时,使用所述第一和第二本地引用计数器。
9.根据权利要求1到8中任一权利要求所述的设备,其特征在于,所述锁是从锁管理器中检索得到并耦合到分布式数据存储以:
锁定对所述对象的访问;
对存储在所述存储器中的所述对象的所述进程授予锁;
防止其它进程在锁定时访问所述对象。
10.根据权利要求7所述的设备,其特征在于,所述对象是编程语言的类实例。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201880010299.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:在处理器核上同时执行多个程序
- 下一篇:电子设备的视觉智能管理