[发明专利]引用计数的实现方法和装置在审
申请号: | 201910229091.9 | 申请日: | 2019-03-25 |
公开(公告)号: | CN111736925A | 公开(公告)日: | 2020-10-02 |
发明(设计)人: | 周志德;丁阳;汤伟;杨飞;蒋奕;张超 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F8/41;G06F12/02 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 王洪 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 引用 计数 实现 方法 装置 | ||
本申请提供一种引用计数的实现方法和装置。本申请引用计数的实现方法,包括:对源代码进行变量使用定义分析获取所述源代码的中间表达;对所述中间表达进行分析确定需要进行RC的引用变量和对所述引用变量要进行的RC操作,所述RC操作包括计数加一incref操作或计数减一decref操作;对所述RC操作进行消除优化获取优化后的RC操作;在所述中间表达中插入所述优化后的RC操作。本申请既可以减少由引用计数带来的程序执行的额外开销,提高程序的执行效率,也可以缩减代码量,节省存储空间。
技术领域
本申请涉及资源管理技术,尤其涉及一种引用计数的实现方法和装置。
背景技术
在程序运行过程中,内存是一种有限的资源,通常是在内存被分配的同时配置一个外部引用指向这块内存,当全部外部引用不存在时,表示相应的内存无法访问变成了“垃圾”,这些“垃圾”需要被释放,否则就会有内存耗尽的风险。为了提高开发效率,现代编程语言大多支持自动内存管理,无需程序员干预。
自动内存管理通常有两种垃圾回收策略:一种是引用追踪垃圾回收(TracingGarbage Collection,Tracing GC),另一种是基于引用计数(Reference Counting,RC)垃圾回收。在引用追踪方案中,垃圾回收器集中识别系统中活的内存对象,从活的对象出发能够访问到的对象也是活对象,其他访问不到的内存都可以直接回收,这个追踪过程通常依赖整个系统中多线程的间歇同步和停顿,也就是俗称的卡顿。在引用计数方案中,系统为每一个内存单元维护一个计数器,对每个内存单元的外部引用进行统计,当引用计数为零(不存在任何外部引用)时即可释放内存单元。引用计数相比引用追踪能够更及时释放内存空间,使得浮动垃圾更少,也将集中的垃圾回收的时间分散开来避免集中的卡顿。
但是,引用计数的实现需要编译器识别出外部引用对应的引用变量,并对每一次引用变量的赋值和离开作用范围(例如函数返回时或异常退出时)都要插入计数操作,这些计数操作给程序执行带来很大的额外开销,降低了程序的执行效率。
发明内容
本申请提供一种引用计数的实现方法和装置,既可以减少由引用计数带来的程序执行的额外开销,提高程序的执行效率,也可以缩减代码量,节省存储空间。
第一方面,本申请提供一种引用计数的实现方法,包括:对源代码进行变量使用定义(Use-Def)分析获取变量的使用和定义之间的对应关系,并根据所述对应关系获取所述源代码的中间表达;对所述中间表达进行分析确定需要进行RC的引用变量和对所述引用变量要进行的RC操作,所述RC操作包括计数加一incref操作或计数减一decref操作;对所述RC操作进行消除优化获取优化后的RC操作;在所述中间表达中插入所述优化后的RC操作。
本申请基于Use-Def信息构建,编译器识别出中间表达中的冗余的RC操作并进行消除,既可以减少程序执行的额外开销,提高程序的执行效率,也可以缩减代码量,节省存储空间。
在一种可能的实现方式中,所述对所述RC操作进行消除优化获取优化后的RC操作,包括:消除对第一引用变量的decref操作,所述第一引用变量为所述中间表达中没有被定义过的本地引用变量;消除对第二引用变量的decref操作,所述第二引用变量为在所述中间表达中的函数退出语句或函数返回语句之前没有被赋值过的本地引用变量。
本申请基于对空引用对象的计数减一操作可以删除的原则,编译器识别出中间表达中的冗余的RC操作并进行消除,既可以减少程序执行的额外开销,提高程序的执行效率,也可以缩减代码量,节省存储空间。
在一种可能的实现方式中,所述对所述RC操作进行消除优化获取优化后的RC操作,包括:消除对第三引用变量的incref操作和对第四引用变量的decref操作,所述第三引用变量和所述第四引用变量为指向同一个资源的引用变量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910229091.9/2.html,转载请声明来源钻瓜专利网。