本技术涉及计算机技术,尤其涉及一种内存管理方法、装置、设备、计算机程序及存储介质。
背景技术:
1、目前,内存占用成为评价各个应用或服务的重要性能指标。相关技术通常是通过手动设置应用或服务中的进程所占用的工作集的大小,来控制进程的内存占用。然而,由于进程在执行过程中占用的工作集是随时变化的,相关技术的方法难以及时地发现工作集也即内存占用的不合理的情况,并进行及时地处理,从而降低了内存管理的效率。
技术实现思路
1、本技术实施例提供一种内存管理方法、装置、设备、计算机程序及存储介质,能够优化应用程序的内存占用,提高内存管理的效率。
2、本技术实施例的技术方案是这样实现的:
3、本技术实施例提供一种内存管理方法,包括:
4、在当前采样周期的当前次采样过程中,通过对当前进程对应的工作集进行尺寸信息采样,得到当前采样信息,并获取所述工作集对应的当前运行区间;所述当前运行区间包括最小工作集与最大工作集;
5、在通过对比所述当前采样信息与所述当前运行区间,确定所述当前运行区间满足预设裁剪条件,且达到预设采样次数的情况下,获取所述工作集的当前尺寸信息与所述当前进程对应的提交内存;
6、基于所述当前尺寸信息与所述提交内存,计算裁剪尺寸;
7、根据所述裁剪尺寸对所述当前运行区间进行裁剪,利用裁剪后的运行区间运行所述当前进程。
8、本技术实施例提供一种内存管理装置,包括:
9、采样模块,用于在当前采样周期的当前次采样过程中,通过对当前进程对应的工作集进行尺寸信息采样,得到当前采样信息,并获取所述工作集对应的当前运行区间;所述当前运行区间包括最小工作集与最大工作集;
10、判定模块,用于在通过对比所述当前采样信息与所述当前运行区间,确定所述当前运行区间满足预设裁剪条件,且达到预设采样次数的情况下,获取所述工作集的当前尺寸信息与所述当前进程对应的提交内存;
11、计算模块,用于基于所述当前尺寸信息与所述提交内存,计算裁剪尺寸;
12、裁剪模块,用于根据所述裁剪尺寸对所述当前运行区间进行裁剪,利用裁剪后的运行区间运行所述当前进程。
13、上述装置中,所述判定模块,还用于获取波动阈值;所述波动阈值表征所述工作集在所述当前进程的运行过程中出现的最大波动;在所述当前采样信息小于所述最小工作集的情况下,利用所述当前采样信息,更新所述最小工作集与所述波动阈值;在所述当前采样信息大于所述最大工作集的情况下,利用所述当前采样信息,更新所述最大工作集;在所述最小工作集与所述波动阈值之和,大于或等于所述最大工作集的情况下,确定所述当前运行区间满足所述预设裁剪条件。
14、上述装置中,所述采样模块,还用于在所述当前次采样过程为首次采样的情况下,获取历史采样周期中的历史采样信息;所述首次采样表征在所述当前采样周期中的第一次采样;根据所述历史采样信息与所述当前采样信息,得到所述最大工作集与所述最小工作集。
15、上述装置中,所述内存管理装置还包括记录模块,所述记录模块,用于在确定所述当前运行区间满足所述预设裁剪条件,且未达到所述预设采样次数的情况下,记录所述当前运行区间,并进行所述当前采样周期中的下一次采样过程;所述判定模块,还用于在所述下一次采样过程中,获取记录的所述当前运行区间,根据所述下一次采样过程对应的采样信息,对所述记录的当前运行区间进行对比与更新,通过所述预设采样次数的采样过程,对所述记录的当前运行区间进行迭代更新。
16、上述装置中,所述计算模块,还用于在所述最小工作集与所述波动阈值之和,小于所述最大工作集的情况下,对所述工作集重新采样,并根据采样结果重新计算所述最大工作集、所述最小工作集与所述波动阈值,进入下一次采样周期。
17、上述装置中,所述判定模块,还用于在所述当前采样信息小于预设最小尺寸阈值的情况下,结束所述当前次采样过程,进入所述当前采样周期中的下一次采样过程。
18、上述装置中,所述裁剪模块,还用于在所述当前尺寸信息大于所述预设最小尺寸阈值的情况下,根据所述当前尺寸信息与预设初始裁剪比例,计算初始裁剪尺寸;根据预设调整上限比例与所述提交内存,得到调整上限值,并根据预设调整下限比例与所述提交内存,得到调整下限值;在所述当前尺寸信息小于所述调整上限值,且大于所述调整下限值的情况下,根据所述调整上限值、所述调整下限值与所述当前尺寸信息,计算当前裁剪比例;根据所述当前裁剪比例对初始裁剪尺寸进行更新,得到中间裁剪尺寸;在所述中间裁剪尺寸大于预设最小裁剪尺寸,且小于预设最大裁剪尺寸的情况下,将所述中间裁剪尺寸作为所述裁剪尺寸。
19、上述装置中,所述裁剪模块,还用于所述得到中间裁剪尺寸之后,在所述中间裁剪尺寸小于或等于所述预设最小裁剪尺寸的情况下,将所述预设最小裁剪尺寸作为所述裁剪尺寸;在所述中间裁剪尺寸大于或等于所述预设最大裁剪尺寸的情况下,将所述预设最大裁剪尺寸作为所述裁剪尺寸。
20、上述装置中,所述裁剪模块,还用于计算所述当前尺寸信息与所述调整下限值之间的第一差值,以及所述调整上限值与所述调整下限值之间的第二差值;计算所述第一差值与所述第二差值的比值,作为所述当前裁剪比例。
21、上述装置中,所述裁剪模块,还用于在所述当前尺寸信息小于或等于所述预设最小尺寸阈值的情况下,将预设最小裁剪尺寸作为所述裁剪尺寸;在所述当前尺寸信息大于或等于所述调整上限值的情况下,不进行剪裁;在所述当前尺寸信息小于或等于所述调整下限值的情况下,将预设最小裁剪尺寸作为所述裁剪尺寸。
22、上述装置中,所述裁剪模块,还用于所述根据所述裁剪尺寸对所述当前运行区间进行裁剪,利用裁剪后的运行区间继续运行所述当前进程之后,在所述当前进程的运行过程中,通过下一个采样周期,继续对所述当前进程的运行区间进行裁剪。
23、本技术实施例提供一种电子设备,包括:
24、存储器,用于存储可执行指令;
25、处理器,用于执行所述存储器中存储的可执行指令时,实现本技术实施例提供的内存管理方法。
26、本技术实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本技术实施例提供的内存管理方法。
27、本技术实施例提供一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时,实现本技术实施例提供的内存管理方法。
28、本技术实施例具有以下有益效果:
29、通过对当前进程对应的工作集进行至少一次采样,得到每次采样对应的当前采样信息,以及工作集对应的当前运行区间,可以通过对比表征进程实时内存占用情况的当前采样信息与运行区间,在确定当前运行区间满足预设调整条件,也即当前进程的工作集波动在合理范围内的情况下,基于工作集的当前尺寸信息与进程申请的提交内存,计算对工作集进行裁剪的尺寸,并对工作集的运行空间进行裁剪,实现了在进程运行过程中,根据内存占用的变化自动触发内存优化流程,并根据当前的内存占用情况动态计算内存裁剪的幅度,能够在减小进程占用的冗余内存空间的基础上,保证进程的正常运行,从而优化了应用程序的内存占用,提高了内存管理的效率。