一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种内存块整理方法、介质及计算设备与流程

2022-04-02 06:00:50 来源:中国专利 TAG:

技术特征:
1.一种内存块整理方法,其中,数据读写进程运行在java虚拟机中,所述java虚拟机的堆外内存中包括若干空闲内存块与若干非空闲内存块,所述进程创建的每个写入线程向自身所专用的非空闲内存块中写入数据,所述进程创建的每个读取线程占用至少一个非空闲内存块进行数据读取;所述方法应用于所述进程创建的内存块整理线程,所述方法包括:在确定满足整理触发条件的情况下,确定n个待整理内存块;其中,n>1,每个待整理内存块为被停止写入数据且包含未失效数据的非空闲内存块;将该n个待整理内存块中的未失效数据复制到m个空闲内存块,m<n,使得该m个空闲内存块成为非空闲内存块,并对复制的每个未失效数据进行读取地址修改,包括:将该未失效数据在复制前所在内存块中的读取地址,修改为该未失效数据在复制后所在内存块中的读取地址;针对每个待整理内存块,在确定不存在正在读取该待整理内存块中的未失效数据的读取线程的情况下,清空该待整理内存块,使得该待整理内存块成为空闲内存块。2.如权利要求1所述方法,其中,所述整理触发条件,包括:所述堆外内存中包括的全部内存块中,空闲内存块所占比例低于预设比例。3.如权利要求1所述方法,针对每个读取线程,该读取线程占用至少一个非空闲内存块的步骤,包括:该读取线程占用至少一个非空闲内存块时,将该至少一个非空闲内存块中被该读取线程所指定的未失效数据的引用计数加1;该读取线程不再占用该至少一个非空闲内存块时,将该至少一个非空闲内存块中被该读取线程所指定的未失效数据的引用计数减1;判断任一非空闲内存块是否包含未失效数据的步骤,包括:若确定该非空闲内存块中的全部数据的引用计数为0,则确定该非空闲内存块不包含未失效数据;若确定该非空闲内存块中的任一数据的引用计数不为0,则确定该非空闲内存块包含未失效数据。4.如权利要求1所述方法,其中,所述堆外内存包括第一区域与第二区域,所述第一区域包括若干空闲内存块与若干非空闲内存块,所述第二区域至少包括若干非空闲内存块;若该写入线程所写入的数据属于第一类型,则该写入线程所专用的非空闲内存块位于第一区域;若该写入线程所写入的数据属于第二类型,则该写入线程所专用的非空闲内存块位于第二区域;第一类型表示预期数据被读取的频率高于预设频率,第二类型表示预期数据被读取的频率不高于预设频率;在确定满足整理触发条件的情况下,确定n个待整理内存块,包括:在确定满足第一区域对应的整理触发条件的情况下,确定第一区域中的n个待整理内存块;所述方法还包括:在监测到所述第二区域中的空闲内存块的数量变为0的情况下,将所述第二区域中的未失效数据转移到第一区域中的内存块,并且,清空所述第二区域。5.如权利要求4所述方法,其中,所述整理触发条件,包括:所述第一区域中包括的全部内存块中,空闲内存块所占比例低于预设比例。
6.如权利要求1所述方法,将该n个待整理内存块中的未失效数据复制到m个空闲内存块,包括:按照每个待整理内存块对应的整理必要性表征值的大小,由大到小对该n个待整理内存块进行排序;其中,每个待整理内存块对应的必要性表征值,正相关于该待整理内存块中剩余空间的大小,正相关于该待整理内存块中保持不出现失效数据的时长,负相关于该待整理内存块中未失效数据的数据量;将排序中连续的待整理内存块归为一组,得到若干组待整理内存块;将同一组待整理内存块中的未失效数据复制到同一个空闲内存块。7.如权利要求1所述方法,其中,每个读取线程包括若干连续执行的读取工作单元;所述方法还包括:当全部读取线程的第i个读取工作单元执行完成时,设置全局序列号为i 1;针对每个待整理内存块,在将该待整理内存块中的未失效数据复制到m个空闲内存块时,记录当前的全局序列号k与该待整理内存块的对应关系;确定不存在正在读取该待整理内存块中的未失效数据的读取线程的步骤,包括:若确定当前的全局序列号变为k 2,则确定不存在正在读取该待整理内存块中的未失效数据的读取线程。8.如权利要求1所述方法,其中,所述java虚拟机部署在流计算框架的节点上,所述数据处理进程创建的计算线程当需要进行数据写入时作为写入线程,当需要进行数据读取时作为读取线程。9.一种电子设备,包括存储器、处理器;所述存储器用于存储可在处理器上运行的计算机指令,所述处理器用于在执行所述计算机指令时实现权利要求1至8任一项所述方法。10.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现权利要求1至8任一项所述方法。

技术总结
本说明书披露的多个实施例提供了一种内存块整理方法、介质及计算设备。在需要的时机,选择堆外内存中的一些非空闲内存块作为待整理内存块,这样的内存块需要满足:被停止写入数据且包含未失效数据。将待整理内存块中的未失效数据复制一份至空闲内存块。将复制的未失效数据的读取地址进行修改,使得后续针对未失效数据的读取操作访问复制后的未失效数据所在的非空闲内存块。这样一来,只需要等待正在读取待整理内存块中的未失效数据的读取线程完成当次读取之后,就可以清空待整理内存块,使得待整理内存块成为空闲内存块,从而实现对该待整理内存块的回收。该待整理内存块的回收。该待整理内存块的回收。


技术研发人员:兰兆千
受保护的技术使用者:阿里云计算有限公司
技术研发日:2022.03.02
技术公布日:2022/4/1
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献