[发明专利]垃圾回收的优化方法、装置、终端设备及机器可读介质在审
申请号: | 201811103427.9 | 申请日: | 2018-09-20 |
公开(公告)号: | CN110928804A | 公开(公告)日: | 2020-03-27 |
发明(设计)人: | 余超君;曹闻世;金一华 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F12/02 | 分类号: | G06F12/02 |
代理公司: | 北京润泽恒知识产权代理有限公司 11319 | 代理人: | 冀晓恺 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 垃圾 回收 优化 方法 装置 终端设备 机器 可读 介质 | ||
本申请公开了一种垃圾回收的优化方法、装置、终端设备及机器可读介质。该方法包括:在回收内存管理单元前,确定所述提前编译文件包含的多个第一对象是否引用了所述文件所在的指定区域以外的第二对象;在确定其中一个或多个第一对象引用所述指定区域以外的第二对象的情况下,记录所述第二对象的地址;确定所述指定区域、所述第二对象所在的区域为非回收区域。本申请提供的方案中,依据存放提前编译文件的指定区域的对象无需被垃圾回收的特点,在垃圾回收时不再遍历提前编译文件的指定区域以及与提前编译文件相关的区域,节约了提前编译文件运行后的垃圾回收的时间。
技术领域
本申请涉及计算机领域,特别是涉及一种垃圾回收的优化方法和、装置、终端设备及机器可读介质。
背景技术
动态编程语言是计算机科学中的一类高级编程语言,是计算机科学中将动态编程语言编译成与执行该动态编程语言的动态编程语言系统相关的本地机器码,从而可以在本地机器上直接执行提前编译生成的二进制文件。
上述的二进制文件可以存储在计算机系统的内存中。但是,提前编译带来的问题在于,提前编译生成的二进制文件存储在内存中,加载后会导致内存占用率大大增加。
针对这一问题,现有技术提出的垃圾回收机制可以对内存进行回收,垃圾回收机制试图将垃圾回收到系统,其中垃圾也就是当前运行程序不再使用的对象占用的内存。一般来说垃圾回收阶段的耗时和提前编译文件运行之后的对象占用的内存大小成正比。现有的垃圾回收方案会花费大量的时间用于检查内存中的对象是否为非可达对象,上述的非可达对象是指从程序运行时访问的根对象出发进行遍历时的不可达对象。当判断为非可达对象,可以释放这些非可达对象占用的内存。
因此,动态编程语言在提前编译技术的引入后,虽然加快了程序的响应时间,但随之增加了内存的对象存储空间,也大大延长了垃圾回收的时间。而垃圾回收时间的延长,可能导致应用不能及时响应外界输入,严重影响用户体验。
发明内容
鉴于上述问题,本发明一实施例提出一垃圾回收的优化方法、装置、终端设备及机器可读介质,以减少垃圾回收的时长。
为解决现有技术存在的问题,本发明一实施例提出一种垃圾回收方法,可以包括如下步骤:
在回收内存管理单元前,判断文件包含的多个第一对象是否引用了所述文件所在的指定区域以外的第二对象,其中所述指定区域位于所述内存管理单元中;
在确定其中一个或多个第一对象引用所述指定区域以外的第二对象的情况下,记录所述第二对象的地址;
确定所述指定区域以及所述第二对象所在的地址为非回收区域。
本申请一实施例还公开一种垃圾回收方法,包括:
判断文件包含的多个第一对象是否引用了文件所在的指定区域以外的第二对象;
记录所述第二对象的地址;
确定所述指定区域以及所述第二对象所在的地址为非回收区域。
本申请一实施例还公开一种垃圾回收装置,包括:
第一对象确定模块,用于在回收内存管理单元前,判断文件包含的多个第一对象是否引用了指定区域以外的第二对象,其中所述文件存储于所述内存管理单元的指定区域中;
第一记录模块,用于在确定其中一个或多个第一对象引用所述指定区域以外的第二对象的情况下,记录所述第二对象的地址;
第一标记模块,用于确定所述指定区域以及所述第二对象所在的地址为非回收区域。
本申请一实施例还公开一种垃圾回收装置,包括:
第二对象确定模块,用于判断文件包含的多个第一对象是否引用了所述文件所在的指定区域以外的第二对象;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811103427.9/2.html,转载请声明来源钻瓜专利网。