【技术实现步骤摘要】
一种内存回收方法及相关装置
[0001]本申请涉及计算机
,尤其涉及一种内存回收方法及相关装置。
技术介绍
[0002]现代操作系统(如Linux、Android、iOS、Fuchsia等),通常会基于性能方面的需求,将大量的应用程序的数据缓存在内存中。另一方面,由于硬盘中的数据和网络上的数据的访问速度较慢,操作系统通常将硬盘以及网络上的数据缓存在内存中,以提升硬盘数据和网络数据的访问性能。为了满足以上应用程序与外部设备的缓存共存的场景需求,操作系统需要实现内存动态分配与回收,以保证内存资源的高效使用与快速分配。
[0003]为了完成内存动态分配与回收,业界普遍采用如下方法:在应用程序需要申请内存的情况下,操作系统检查系统的空闲内存是否能够满足应用程序的内存分配请求;当空闲内存的空间不足时,操作系统会先将硬盘和网络相关的缓存数据进行回收,并将回收后所得到的空闲内存分配给应用程序。
[0004]通常,现有的方法在大部分情况下能够完成内存的回收与分配。但是在一些特殊情况下,现有的方法容易出现内存回收失败的现 ...
【技术保护点】
【技术特征摘要】
1.一种内存回收方法,其特征在于,包括:获取来自于第一对象的内存分配请求;确定所述内存分配请求对应的调用路径,所述调用路径包括多个对象之间的调用关系,所述第一对象为所述调用路径中的最后一个对象;根据所述调用路径确定用于执行内存回收的第二对象,所述第二对象为未触发执行内存回收的对象;调用所述第二对象,以触发所述第二对象执行内存回收操作。2.根据权利要求1所述的方法,其特征在于,所述根据所述调用路径确定用于执行内存回收的第二对象,包括:若所述调用路径中不包括内存管理对象,则在多个候选对象中确定所述第二对象,所述内存管理对象用于触发其他对象执行内存回收,所述第二对象为所述多个候选对象中的任意一个对象;若所述调用路径中包括内存管理对象及所述内存管理对象所调用的第三对象,则在所述多个候选对象中确定与所述第三对象不相同的所述第二对象,所述第三对象为已触发执行内存回收的对象。3.根据权利要求2所述的方法,其特征在于,所述多个候选对象包括文件系统对象、网络协议栈对象和驱动对象。4.根据权利要求1
‑
3任意一项所述的方法,其特征在于,所述确定所述内存分配请求对应的调用路径,包括:获取所述内存分配请求中的调用信息,其中,所述内存分配请求为进程间调用消息,所述调用信息用于记录对象间的调用关系,所述调用信息携带于所述调用路径中的每个对象所生成的进程间调用消息中,且所述调用信息在所述调用路径中的对象生成新的进程间调用消息时更新;根据所述调用信息确定所述调用路径。5.根据权利要求4所述的方法,其特征在于,当所述调用路径中的任意一个对象在执行来自于另一个对象的进程间调用消息的期间生成新的进程间调用消息时,所述新的进程间调用消息中的调用信息发生更新,以使得更新后的调用信息中记录生成所述新的进程调用消息的对象。6.根据权利要求4或5所述...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。