内存管理方法、装置、设备、计算机程序及存储介质与流程
未命名
08-09
阅读:117
评论:0
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.本技术实施例提供一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时,实现本技术实施例提供的内存管理方法。
30.本技术实施例具有以下有益效果:
31.通过对当前进程对应的工作集进行至少一次采样,得到每次采样对应的当前采样信息,以及工作集对应的当前运行区间,可以通过对比表征进程实时内存占用情况的当前采样信息与运行区间,在确定当前运行区间满足预设调整条件,也即当前进程的工作集波动在合理范围内的情况下,基于工作集的当前尺寸信息与进程申请的提交内存,计算对工作集进行裁剪的尺寸,并对工作集的运行空间进行裁剪,实现了在进程运行过程中,根据内存占用的变化自动触发内存优化流程,并根据当前的内存占用情况动态计算内存裁剪的幅度,能够在减小进程占用的冗余内存空间的基础上,保证进程的正常运行,从而优化了应用程序的内存占用,提高了内存管理的效率。
附图说明
32.图1是本技术实施例提供的内存管理装置的一个可选的结构示意图;
33.图2是本技术实施例提供的内存管理方法的一个可选的流程示意图;
34.图3是本技术实施例提供的内存管理方法的一个可选的流程示意图;
35.图4是本技术实施例提供的内存管理方法的一个可选的流程示意图;
36.图5是本技术实施例提供的内存管理方法的一个可选的流程示意图;
37.图6是本技术实施例提供的内存管理方法的一个可选的流程示意图;
38.图7是本技术实施例提供的内存管理方法的一个可选的流程示意图;
39.图8是本技术实施例提供的内存管理方法的一个可选的流程示意图;
40.图9是本技术实施例提供的内存管理方法应用于实际场景中的一个可选的流程示意图;
41.图10是本技术实施例提供的内存管理方法应用于实际场景中的一个可选的流程示意图。
具体实施方式
42.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
43.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可
以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
44.在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
45.本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括a、b、c中的至少一种,可以表示包括从a、b和c构成的集合中选择的任意一个或多个元素。
46.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
47.对本技术实施例进行进一步详细说明之前,对本技术实施例中涉及的名词和术语进行说明,本技术实施例中涉及的名词和术语适用于如下的解释。
48.1)工作集:工作集是进程在物理内存如随机存取存储器(random access memory(ram)中占用的内存页的集合,也即操作系统为进程分配的物理内存集合。
49.2)提交内存:进程向操作系统申请的内存。一个进程的提交内存通常大于工作集,对于超出工作集的提交内存部分,操作系统通常使用内存分页或磁盘资源对该进程进行资源分配。
50.3)智能交通系统(intelligent traffic system,its)又称智能运输系统(intelligent transportation system)、智慧交通,是将先进的科学技术(信息技术、计算机技术、数据通信技术、传感器技术、电子控制技术、自动控制理论、运筹学、人工智能等)有效地综合运用于交通运输、服务控制和车辆制造,加强车辆、道路、使用者三者之间的联系,从而形成一种保障安全、提高效率、改善环境、节约能源的综合运输系统。
51.本技术实施例提供一种内存管理方法、装置、设备、计算机程序及存储介质,能够提高应用使用的安全性。本技术实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。下面说明本技术实施例提供的电子设备的示例性应用,本技术实施例提供的电子设备可以实施为智能手机、智能手表、笔记本电脑,平板电脑,台式计算机,机顶盒,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)、智能语音交互设备、智能家电和车载终端等各种类型的终端或用户终端,也可以实施为服务器。
52.在一些实施例中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能语音交互设备、智能家电和车载终端等,但并不局限于此。
53.下面,将说明电子设备实施为终端的示例性应用。
54.参见图1,图1是本技术实施例提供的终端400的结构示意图,图2所示的终端400包
括:至少一个处理器410、存储器450、至少一个网络接口420和用户接口430。终端400中的各个组件通过总线系统440耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图1中将各种总线都标为总线系统440。
55.处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digital signal processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
56.用户接口430包括使得能够呈现媒体内容的一个或多个输出装置431,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口430还包括一个或多个输入装置432,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
57.存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
58.存储器450包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,read only memory),易失性存储器可以是随机存取存储器(ram,random access memory)。本技术实施例描述的存储器450旨在包括任意适合类型的存储器。
59.在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
60.操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
61.网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universal serial bus)等;
62.呈现模块453,用于经由一个或多个与用户接口430相关联的输出装置431(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
63.输入处理模块454,用于对一个或多个来自一个或多个输入装置432之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
64.在一些实施例中,本技术实施例提供的内存管理装置可以采用软件方式实现,图1示出了存储在存储器450中的内存管理装置455,其可以是程序和插件等形式的软件,包括以下软件模块:采样模块4551、判定模块4552、计算模块4553和裁剪模块4554,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。
65.将在下文中说明各个模块的功能。
66.在另一些实施例中,本技术实施例提供的装置可以采用硬件方式实现,作为示例,本技术实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本技术实施例提供的内存管理方法,例如,硬件译码处理器形式的处理器可以采用一个或多个
应用专用集成电路(asic,application specific integrated circuit)、dsp、可编程逻辑器件(pld,programmable logic device)、复杂可编程逻辑器件(cpld,complex programmable logic device)、现场可编程门阵列(fpga,field-programmable gate array)或其他电子元件。
67.在一些实施例中,终端或服务器可以通过运行计算机程序来实现本技术实施例提供的内存管理方法。举例来说,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(native)应用程序(app,application),即需要在操作系统中安装才能运行的程序,如电脑管家类app或者安全防护类app;也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意app中的小程序或者网页客户端程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
68.将结合本技术实施例提供的电子设备的示例性应用和实施,说明本技术实施例提供的内存管理方法。
69.参见图2,图2是本技术实施例提供的内存管理方法的一个可选的流程示意图,将结合图2示出的步骤进行说明。
70.s101、在当前采样周期的当前次采样过程中,通过对当前进程对应的工作集进行尺寸信息采样,得到当前采样信息,并获取工作集对应的当前运行区间;当前运行区间包括最小工作集与最大工作集。
71.本技术实施例提供的内存管理方法可以应用于对电子设备上,操作系统中的应用程序或服务进行内存优化或内存管理的场景,示例性地,操作系统可以是windows系统、mac系统或移动操作系统等等,应用程序可以是手机管家、电脑管家或等常驻类应用等等,具体的根据实际情况进行选择,本技术实施例不作限定。
72.本技术实施例中,电子设备的操作系统中运行有应用程序或服务,应用程序或服务以进程的形式运行,当前进程可以是应用程序或服务中的任意进程。电子设备在当前采样周期中,可以在当前采样周期中,对当前进程对应的工作集,也即当前进程对应的内存使用信息进行多次采样,以对当前进程的内存占用情况进行实时记录。
73.本技术实施例中,工作集表征当前进程在运行过程中占用的物理内存的统称。可理解,随着当前进程的任务执行过程以及进程状态的变化,当前进程对应的工作集的大小也是在随时发生变化的,电子设备通过当前次采样过程,可以得到工作集在当前采样时刻的大小,如40m,作为当前采样信息。
74.在一些实施例中,为了防止产生过多的缺页中断,电子设备可以在进程运行一段时间之后,根据采样结果来对进程的工作集区间进行裁剪。在一些实施例中,windows操作系统的电子设备可以通过调用getprocessmemoryinfo方法,获取当前进程的工作集dwworkingset占用的内存大小,作为当前采样信息。
75.本技术实施例中,在当前采样过程中,电子设备获取当前进程的工作集对应的当前运行区间。这里,当前运行区间可以包含当前进程的工作集对应的可波动范围。
76.在一些实施例中,当前运行区间可以是工作集对应的最大工作集与最小工作集。这里,最大工作集和最小工作集的初始值可以由操作系统进行分配或由进程指定。本技术实施例可以通过在多次采样过程中,根据每次实时采样得到的当前工作集的大小(当前采样信息),与当前运行区间中的最大工作集和/或最小工作集进行对比,评估当前运行区间
的设置是否合理,例如,是否能够满足进程运行的需要。在当前运行区间设置不合理,也即不满足预设裁剪条件的情况下,将当前运行区间更新至合理的区间;在满足预设裁剪条件的情况下,对当前运行区间进行裁剪,以在不影响进程运行的基础上减少进程的内存占用。这样,就可以通过多次迭代,使得当前运行区间逐步趋近于当前工作集的实际波动范围。
77.s102、在通过对比当前采样信息与当前运行区间,确定当前运行区间满足预设裁剪条件,且达到预设采样次数的情况下,获取工作集的当前尺寸信息与当前进程对应的提交内存。
78.本技术实施例中,预设裁剪条件表征当前运行区间与当前进程的工作集的实际波动范围之间的差距小于预设差距范围,也即当前运行区间与工作集的实际波动范围相接近的时候,说明当前运行区间设置较为合理,能够保证当前进程的运行效率不受影响。在这种情况下,电子设备可以确定当前次采样过程在当前采样周期中对应的采样次数是否达到预设采样次数,在达到预设采样次数的情况下,说明当前运行区间是通过足够多的采样信息得到的,可靠性较高,电子设备进入工作集裁剪过程,以通过工作集裁剪过程,对当前运行区间进行进一步优化和裁剪,使之与当前进程实际占用的工作集更接近,以优化内存的占用。
79.在一些实施例中,预设采样次数可以是30次,也可以是其他值,具体的根据实际情况进行选择,本技术实施例不作限定。
80.本技术实施例中,在当前运行区间满足预设裁剪条件,且达到预设采样次数的情况下,电子设备启动工作集裁剪过程,获取当前进程的工作集在当前时刻占用的内存大小,作为当前尺寸信息,以根据工作集最近一次的内存占用状态进行裁剪;并且,获取当前进程向操作系统申请的内存资源大小,作为提交内存。
81.在一些实施例中,在windows操作系统上,与采样过程类似,电子设备同样可以通过调用getprocessmemoryinfo,获取dwworkingset的值作为当前尺寸信息,以及dwcommitsize作为提交内存。
82.s103、基于当前尺寸信息与提交内存,计算裁剪尺寸。
83.本技术实施例中,电子设备可以基于当前尺寸信息与提交内存,根据工作集的实际占用大小,动态地计算裁剪尺寸,也即对当前工作集的裁剪幅度。
84.在一些实施例中,基于图2,如图3所示,s103可以通过s1031-s1035来实现,将结合各步骤进行说明。
85.s1031、在当前尺寸信息大于预设最小尺寸阈值的情况下,根据当前尺寸信息与预设初始裁剪比例,计算初始裁剪尺寸。
86.本技术实施例中,电子设备将得到的当前尺寸信息与预设最小尺寸阈值进行对比,在当前尺寸信息大于预设最小尺寸阈值的情况下,说明工作集的占用内存有可优化的空间,电子设备根据当前尺寸信息与预设初始裁剪比例,计算初始裁剪尺寸。
87.本技术实施例中,预设初始裁剪比例表征对工作集的默认裁剪大小。在一些实施例中,预设初始裁剪比例可以是10%,也可以设置为其他值,具体的根据实际情况进行选择,本技术实施例不作限定。
88.示例性地,可以使用变量dwtrimsize记录裁剪尺寸,利用当前尺寸信息与预设初始裁剪比例的乘积dwworkingset*10%作为初始裁剪尺寸,对dwtrimsize赋值,并在后续的
处理过程中,利用中间裁剪尺寸对dwtrimsize进行更新,将在之后的步骤中进行说明。
89.在一些实施例中,预设最小尺寸阈值可以根据应用的不同运行规模设置,具体的根据实际情况进行选择,本技术实施例不作限定。
90.s1032、根据预设调整上限比例与提交内存,得到调整上限值,并根据预设调整下限比例与提交内存,得到调整下限值。
91.本技术实施例中,电子设备可以根据当前进程申请的提交内存的大小,结合预设的上下限比例,确定出最大调整上限(调整上限值)和最小调整下限(调整下限值),从而根据最大调整上限和最小调整下限,对工作集的当前实际大小进行评估,确定对工作集的裁剪幅度。
92.在一些实施例中,电子设备可以通过公式(1),计算调整上限值;通过公式(2),计算调整下限值,如下:
93.dwmaxadjust=dwcommitsize*60%
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
94.公式(1)中,dwmaxadjust为调整上限值,dwcommitsize为提交内存,预设调整上限比例为60%。
95.dwminadjust=dwcommitsize*20%
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
96.公式(2)中,dwminadjust为调整上限值,预设调整下限比例为20%。
97.需要说明的是,在一些实施例中,预设调整上限比例与预设调整下限比例可以根据实际需要进行设置,具体的根据实际情况进行选择,本技术实施例不作限定。
98.s1033、在当前尺寸信息小于调整上限值,且大于调整下限值的情况下,根据调整上限值、调整下限值与当前尺寸信息,计算当前裁剪比例。
99.本技术实施例中,在当前尺寸信息小于调整上限值,且大于调整下限值的情况下,电子设备可以根据调整上限值、调整下限值与当前尺寸信息,动态地计算当前裁剪比例。
100.在一些实施例中,电子设备可以根据公式(3)计算当前裁剪比例,如下:
101.dwpercent=(dwworkingset-dwminadjust)/(dwmaxadjust-dwminadjust)
ꢀꢀꢀ
(3)
102.公式(3)中,dwpercent为当前裁剪比例,dwworkingset为当前尺寸信息,电子设备可以计算当前尺寸信息与调整下限值dwminadjust之间的第一差值(dwworkingset-dwminadjust),以及调整上限值dwmaxadjust与调整下限值dwminadjust之间的第二差值(dwmaxadjust-dwminadjust);计算第一差值与第二差值的比值,作为当前裁剪比例。
103.s1034、根据当前裁剪比例对初始裁剪尺寸进行更新,得到中间裁剪尺寸。
104.本技术实施例中,电子设备可以利用上述计算的当前裁剪比例与初始裁剪尺寸的乘积,对初始裁剪尺寸进行更新,得到中间裁剪尺寸。
105.在一些实施例中,电子设备可以通过公式(4)计算中间裁剪尺寸,如下:
106.dwtrimsize=dwtrimsize0*dwpercent
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
107.公式(4)中,dwtrimsize0为初始裁剪尺寸,dwtrimsize为利用当前裁剪比例dwpercent,对初始裁剪尺寸更新得到的中间裁剪尺寸。
108.s1035、在中间裁剪尺寸大于预设最小裁剪尺寸,且小于预设最大裁剪尺寸的情况下,将中间裁剪尺寸作为裁剪尺寸。
109.本技术实施例中,电子设备可以通过预设最小裁剪尺寸与预设最大裁剪尺寸,对中间裁剪尺寸的大小是否合理进行评估。在中间裁剪尺寸大于预设最小裁剪尺寸,且小于
预设最大裁剪尺寸的情况下,说明中间裁剪尺寸设置合理,电子设备将中间裁剪尺寸作为裁剪尺寸,以利用裁剪尺寸实施对工作集运行空间的裁剪。
110.在一些实施例中,预设最小裁剪尺寸可以是1m,预设最大裁剪尺寸可以是10m,具体的根据实际情况进行选择,本技术实施例不作限定。
111.在一些实施例中,基于图3,如图4所示,s1034之后,还可以执行s1036或s1037,如下:
112.s1036、在中间裁剪尺寸小于或等于预设最小裁剪尺寸的情况下,将预设最小裁剪尺寸作为裁剪尺寸。
113.本技术实施例中,在中间裁剪尺寸小于或等于预设最小裁剪尺寸的情况下,说明根据当前尺寸信息动态计算得到的中间裁剪尺寸过小,电子设备将预设最小裁剪尺寸作为裁剪尺寸,以根据预设最小裁剪尺寸对工作集进行裁剪。
114.s1037、在中间裁剪尺寸大于或等于预设最大裁剪尺寸的情况下,将预设最大裁剪尺寸作为裁剪尺寸。
115.本技术实施例中,在中间裁剪尺寸大于或等于预设最大裁剪尺寸的情况下,说明根据当前尺寸信息动态计算得到的中间裁剪尺寸过大,为避免剪裁过多内存影响当前进程的高效运行,电子设备将将预设最大裁剪尺寸作为裁剪尺寸,根据预设最大裁剪尺寸对工作集进行裁剪。
116.在一些实施例中,基于图3或图4,如图5所示,s102之后,s104之前,还可以执行s1038,如下:
117.s1038、在当前尺寸信息小于或等于预设最小尺寸阈值的情况下,将预设最小裁剪尺寸作为裁剪尺寸。
118.本技术实施例中,在当前尺寸信息小于或等于预设最小尺寸阈值的情况下,说明工作集当前占用的内存资源较少,不需要进行幅度过多的裁剪,电子设备将将预设最小裁剪尺寸作为裁剪尺寸。
119.在一些实施例中,如图5所示,s1032之后,s104之前,还可以执行s1039,如下:
120.s1039、在当前尺寸信息小于或等于调整下限值的情况下,将预设最小裁剪尺寸作为裁剪尺寸。
121.本技术实施例中,在当前尺寸信息小于调整下限值的情况下,说明工作集当前占用的内存资源较少,不需要进行幅度过多的裁剪,电子设备将将预设最小裁剪尺寸作为裁剪尺寸。
122.在一些实施例中,如图5所示,s102之后,还可以执行s1040,如下:
123.s1040、在当前尺寸信息大于或等于调整上限值的情况下,不进行剪裁。
124.本技术实施例中,在当前尺寸信息大于或等于调整上限值的情况下,说明当前进程运行需要占用较多的内存资源,为保证进程的高效运行,电子设备不对当前进程的工作集进行裁剪,进入下一采样周期。
125.s104、根据裁剪尺寸对当前运行区间进行裁剪,利用裁剪后的运行区间运行当前进程。
126.本技术实施例中,电子设备根据裁剪尺寸对当前运行区间进行裁剪,示例性地,对最小工作集和/或最大工作集进行更新或重新设置,得到裁剪后的运行区间。可理解,由于
最小工作集表征操作系统为保证进程运行所保留的最小常驻内存量;最大工作集表征操作系统为进程预留的最大内存量,电子设备根据计算得到的裁剪尺寸,对最小工作集与最大工作集进行重新设置,可以使得操作系统为进程保留的内存资源与进程实际占用内存量更为接近,从而可以减少进程占用的冗余内存资源。
127.示例性地,某进程的当前运行区间为【40m,60m】,其中,40m代表最小工作集,60m代表最大工作集。电子设备通过多次采样过程,确定该进程的当前运行区间满足预设裁剪条件的情况下,获取该进程工作集的当前尺寸信息,如50m,以及该进程的提交内存;电子设备在基于当前尺寸信息与提交内存计算出裁剪尺寸的情况下,根据裁剪尺寸对当前运行区间进行裁剪,也即对最小工作集与最大工作集进行更新,将最小工作集设置为48m,最大工作集设置为52m,得到裁剪后的运行区间【48m,52m】,并利用裁剪后的运行区间运行该进程,从而优化了进程的内存占用。
128.本技术实施例中,裁剪后的运行区间对应占用的内存资源更少,电子设备利用裁剪后的运行区间继续运行当前进程,以减少当前进程占用的内存,优化内存管理和调度。
129.在一些实施例中,在操作系统为windows系统的情况下,电子设备可以通过调用setprocessworkingsetsize方法,重新设置最大工作集与最小工作集,以实现对当前运行区间的裁剪。
130.在一些实施例中,在执行对当前运行区间的裁剪时,电子设备可以利用windows系统的最近最少使用算法,对当前运行区间中长时间不使用的内存部分进行裁剪。
131.可以理解的是,通过对当前进程对应的工作集进行至少一次采样,得到每次采样对应的当前采样信息,以及工作集对应的当前运行区间,可以通过对比表征进程实时内存占用情况的当前采样信息与运行区间,在确定当前运行区间满足预设调整条件,也即当前进程的工作集波动在合理范围内的情况下,基于工作集的当前尺寸信息与进程申请的提交内存,计算对工作集进行裁剪的尺寸,并对工作集的运行空间进行裁剪,实现了在进程运行过程中,根据内存占用的变化自动触发内存优化流程,并根据当前的内存占用情况动态计算内存裁剪的幅度,能够在减小进程占用的冗余内存空间的基础上,保证进程的正常运行,从而优化了应用程序的内存占用,提高了内存管理的效率。
132.在一些实施例中,基于图2,如图6所示,s101可以通过执行s1011-s1013来实现,将结合各步骤进行说明。
133.s1011、通过对当前进程对应的工作集进行尺寸信息采样,得到当前采样信息。
134.s1012、在当前次采样过程为首次采样的情况下,获取历史采样周期中的历史采样信息。
135.s1013、根据历史采样信息与当前采样信息,得到最大工作集与最小工作集。
136.本技术实施例中,首次采样指当前采样周期内的第一次采样,对于首次采样过程,电子设备获取历史采样周期中采样及记录当前进程的工作集的历史采样信息,也即工作集在各个历史采样时刻的大小,根据历史采样信息与当前采样信息进行统计,将其中的最大值作为最大工作集,将其中的最小值作为最小工作集,从而得到当前运行区间。
137.在一些实施例中,对于首个采样周期的第一次采样,电子设备直接将采样得到的第一个当前采样信息作为最大工作集和最小工作集。
138.在一些实施例中,基于图2或图6,如图7所示,s102之前,还可以执行s301-s304,如
下:
139.s301、获取波动阈值;波动阈值表征工作集在当前进程的运行过程中出现的最大波动。
140.本技术实施中,在当前次采样过程为当前采样周期的非首次采样的情况下,电子设备获取上一次采样过程计算或更新得到的波动阈值。
141.本技术实施例中,在当前次采样过程为当前采样周期的首次采样的情况下,电子设备可以根据获取的历史采样信息,计算当前进程的工作集出现的最大波动值,作为波动阈值,或者,电子设备也可以获取预设波动值,如10m,作为波动阈值,具体的根据实际情况进行选择,本技术实施例不作限定。
142.s302、在当前采样信息小于最小工作集的情况下,利用当前采样信息,更新最小工作集与波动阈值。
143.本技术实施例中,最小工作集表征当前进程在内存中运行时,操作系统为当前进程保留的最小内存空间。在当前采样信息小于最小工作集的情况下,说明当前进程实际使用的物理内存达不到最小工作集,根据最小工作集为当前进程进行物理内存分配会造成内存的多余占用。电子信息可以利用当前采样信息,更新最小工作集,也即直接将当前采样信息作为最小工作集,从而减小操作系统对当前进程分配的多余内存,使得当前运行空间与当前进程本身的占用更加趋近。
144.本技术实施例中,由于最小工作集是根据历史信息计算的最小占用,在当前采样信息小于最小工作集的情况下,说明当前进程的内存占用情况发生了较大的波动,电子设备重新计算波动阈值,进而根据更新的最小工作集与波动阈值执行s304。
145.s303、在当前采样信息大于最大工作集的情况下,利用当前采样信息,更新最大工作集。
146.本技术实施例中,在当前采样信息大于最大工作集的情况下,说明当前进程需要占据更多内存来运行,电子设备利用当前采样信息,对最大工作集重新赋值,进而根据更新的最大工作集执行s304。
147.s304、在最小工作集与波动阈值之和,大于或等于最大工作集的情况下,确定当前运行区间满足预设裁剪条件。
148.本技术实施例中,电子设备通过s301获取波动阈值之后,在最小工作集与波动阈值之和,大于或等于最大工作集的情况下,说明此时的最小工作集与最大工作集与工作集的当前内存占用较为接近,电子设备可以直接确定当前运行区间满足预设裁剪条件,进而判断当前次采样过程在当前采样周期中对应的采样次数是否达到预设采样次数。
149.在一些实施例中,基于图7,如图8所示,s304之后,s102之前,还可以执行s201-s202,如下:
150.s201、在确定当前运行区间满足预设裁剪条件,且未达到预设采样次数的情况下,记录当前运行区间,并进行当前采样周期中的下一次采样过程。
151.本技术实施例中,对于当前采样周期中的每次非首个采样过程,在通过当前次采样的得到的当前采样信息与当前运行区间,确定当前运行区间满足预设裁剪条件,但还未达到预设采样次数的情况下,电子设备记录当前运行区间,示例性地,可以是经过s302或s303,对初始获取的最大工作集或最小工作集进行了更新后,满足预设裁剪条件的当前运
行区间;也可以是通过s1013初始获取到,就满足预设裁剪条件的的最大工作集和最小工作集,结束当前次采样过程,进入下一次采样过程。
152.s202、在下一次采样过程中,获取记录的当前运行区间,根据下一次采样过程对应的采样信息,对记录的当前运行区间进行对比与更新,通过预设采样次数的采样过程,对记录的当前运行区间进行迭代更新。
153.本技术实施例中,电子设备可以在下一次采样过程中,获取在上一次采样过程中记录的、已经满足预设裁剪条件的当前运行区间,根据下一次采样过程对应的当前采样信息,对记录的当前运行区间进行对比与更新。
154.示例性地,电子设备将下一次采样过程得到的采样信息,与记录的当前运行区间进行对比,发现采样信息已经不在记录的当前运行区间的范围内,如小于上一次采样过程记录的最小工作集,或者,大于上一次采样过程记录的最大工作集的情况下,电子设备继续根据采样信息对记录的最小工作集或最大工作集进行更新,这样,就可以通过预设采样次数的采样过程,对记录的当前运行区间进行迭代更新,使得当前运行区间能够动态地根据工作集的当前内存占用情况进行更新,保持准确性。
155.可以理解的是,每次采样过程的当前运行区间可以是对最小工作集和最大工作集进行过更新得到的,在下一次采样过程中,电子设备可以对更新后的当前运行区间进行进一步的更新,这样可以通过多次采样过程,对当前运行区间进行迭代地、持续地更新,使之逐步趋近于当前进程的工作集实际占用的内存大小。在此基础上进行工作集的剪裁过程,能够进一步提高内存裁剪的精度,并提高内存管理的准确性和效率。
156.在一些实施例中,基于图8,s304之前,还可以执行s401,如下:
157.s401、在最小工作集与波动阈值之和,小于最大工作集的情况下,对工作集重新采样,并根据采样结果重新计算最大工作集、最小工作集与波动阈值,进入下一次采样周期。
158.本技术实施例中,由于在当前采样信息小于最小工作集的情况下,电子设备可以通过s302对最小工作集进行更新;或者,在当前采样信息大于最大工作集的情况下,电子设备可以通过s303对最大工作集进行更新,在s401之前,如果最小工作集与波动阈值之和,仍然小于最大工作集,说明电子设备根据本次采样周期内的每次采样信息计算出的当前运行区间存在较大误差,当前进程可能做了一些操作,导致内存波动非常大,不在设定的区间范围内了,因此之前的采样信息已经不准确了。电子设备不再基于之前采样结果进行处理,而是重新对工作集采样,并根据采样结果重新计算最大工作集、最小工作集与波动阈值,进入下一次采样周期。
159.可以理解的是,通过当前采样信息与当前运行区间的对比,电子设备可以及时发现上一轮采样过程中对当前运行区间设置或剪裁不合理的情况,进而及时更新和修正,从而提高了内存剪裁的精度,进而提高了内存管理的准确性和效率。
160.在一些实施例中,基于图2-图8中的任一过程,s101或s1011之后,还可以执行s501,如下:
161.s501、在当前采样信息小于预设最小尺寸阈值的情况下,结束当前次采样过程,进入当前采样周期中的下一次采样过程。
162.本技术实施例中,在当前采样信息小于预设最小尺寸阈值的情况下,说明当前进程当前占用的内存较少,本次采样过程可以暂时不对当前进程的工作集进行优化。电子设
备结束当前次采样过程,进入当前采样周期中的下一次采样过程。
163.下面,将结合图9,对windows操作系统上的常驻进程,如电脑管家进程进行内存优化为例,说明本技术实施例在一个实际的应用场景中的示例性应用。
164.s601、进程启动。
165.s602、确定是否启动内存裁剪线程。
166.s602中,在确定启动内存裁剪线程的情况下,执行s603,否则,执行s617。
167.s603、获取工作集。
168.s603中,电子设备可以通过调用getprocessmemoryinfo,获取当前进程的工作集dwworkingset。
169.这里,s603的执行过程与上述的s101中的过程描述一致,此处不再赘述。
170.s604、确定工作集是否小于预设最小阈值。
171.s604中,预设最小阈值相当于上述的预设最小尺寸阈值。示例性地,预设最小阈值可以是windows系统中的min_workingset,min_workingset可以预设为10240kb,即10m;在当前进程的工作集dwworkingset小于预设最小阈值的情况下,则可不对当前进程进行工作集的裁剪。
172.这里,s604的执行过程与上述的s501中的过程描述一致,此处不再赘述。
173.s605、确定是否是第一次采样。
174.s605中,在第一次采样的情况下,执行s606,否则,执行s607。
175.s606、计算最小工作集、最大工作集与波动阈值。
176.s606中,电子设备计算最小工作集工作集dwminworkingset、最大工作集dwmaxworkingset与工作集的波动阈值dwfluctuation。
177.这里,s605-s606的执行过程与上述的s1012-s1013以及s301中的过程描述一致,此处不再赘述。
178.s607、确定工作集是否小于最小工作集。
179.s607中,在工作集dwworkingset小于最小工作集dwminworkingset的情况下,执行s608;否则,执行s609。
180.s608、将工作集赋值给最小工作集,并重新计算波动阈值。
181.s608中,电子设备将dwworkingset赋值给dwminworkingset,并重新计算dwfluctuation。
182.这里,s607-s608的过程与s302中描述一致,此处不再赘述。
183.s609、确定工作集是否大于最大工作集。
184.s609中,在dwworkingset大于dwmaxworkingset的情况下,执行s610;否则,执行s611。
185.s610、将工作集赋值给最大工作集。
186.s610中,电子设备将dwworkingset赋值给dwmaxworkingset。
187.这里,s609-s610的过程与s303中的过程描述一致,此处不再赘述。
188.s611、确定最小工作集和波动阈值之和是否小于最大工作集。
189.s611中,电子设备确定dwminworkingset与dwfluctuation之和是否小于dwmaxworkingset,在小于的情况下,执行s612;否则,执行s613。
190.s612、重新进行采样,并重新计算最小工作集、最大工作集与波动阈值。
191.s612中,电子设备重新对当前进程的工作集进行采样,并根据采样结果重新计算dwminworkingset、dwmaxworkingset与dwfluctuation。
192.这里,s611-s612的过程与s402中的过程描述一致,此处不再赘述。
193.s613、确定是否达到采样次数。
194.s613中,在未达到采样次数的情况下,返回执行s603,即进入当前采样周期的下一次采样过程;否则,执行s614。
195.s614、计算工作集的裁剪尺寸。
196.s615、执行内存裁剪。
197.s615中,电子设备调用setprocessworkingsetsize对内存,也即当前进程的工作集进行裁剪。
198.这里,s613-s615的过程与s102-s104中的过程描述一致,此处不再赘述。
199.s616、获取下次采样的时间间隔。
200.s616中,电子设备可以获取默认时间间隔,如10秒作为下次采样的时间间隔,也就是10秒采样一次。电子设备也可以根据裁剪尺寸,动态计算下次采样的时间间隔,例如,裁剪尺寸较大时,说明对当前进程的内存空间进行了较大的改动,电子设备可以缩短下次采样的时间间隔,以及时关注内存空间的修改对当前进程的影响。在裁剪尺寸较小时,电子设备可以适当延长下次采样的时间间隔。
201.这里,在下次采样的时间间隔到达的情况下,电子设备进入下一采样周期,继续对当前进程的内存占用进行优化。
202.s617、结束。
203.s617中,电子设备可以持续通过多个采样周期运行内存裁剪线程,直至当前进程运行结束,或者,电子设备也可以在满足预设结束触发条件的情况下,结束内存裁剪线程。
204.在一些实施例中,上述s614的过程可以如图10所示,包括s614-1至s614-13,如下:
205.s614-1、获取当前进程的工作集和提交内存。
206.s614-1中,电子设备获取当前进程的dwworkingset和dwcommitsize。
207.s614-2、判断工作集是否小于预设最小阈值。
208.s614-2中,在工作集小于预设最小阈值min_workingset的情况下,执行s614-3,否则,执行s614-4。
209.s614-3、将预设最小裁剪尺寸作为裁剪尺寸。
210.s614-3中,电子设备将预设最小裁剪尺寸min_trim_size赋值给dwtrimsize,并将dwtrimsize作为裁剪尺寸。
211.这里,s614-2至s614-3的执行过程与s1038中描述的过程一致,此处不再赘述。
212.s614-4、计算默认裁剪尺寸。
213.s614-4中,电子设备计算dwworkingset*10%的值,作为默认裁剪尺寸dwtrimsize,也即初始裁剪尺寸。
214.这里,s614-4的执行过程与s1031中描述的过程一致,此处不再赘述。
215.s614-5、计算最大调整上限与最小调整下限。
216.s614-5中,电子设备可以根据提交内存dwcommitsize,通过公式(1)计算最大调整
上限dwmaxadjust;通过公式(2),计算最小调整下限dwminadjus。
217.这里,s614-4的执行过程与s1032中描述的过程一致,此处不再赘述。
218.s614-6、确定工作集是否大于最大调整上限。
219.s614-6中,电子设备确定工作集dwworkingset是否大于最大调整上限dwmaxadjust,若是则不执行裁剪;否则执行s614-7。
220.s614-7、确定工作集是否小于最小调整下限。
221.s614-7中,电子设备确定工作集dwworkingset是否小于最小调整下限dwminadjust。在小于最小调整下限dwminadjust的情况下,执行s614-3,将最小裁剪大小min_trim_size赋值给dwtrimsize;在工作集dwworkingset小于最大调整上限dwmaxadjust,且大于最小调整下限dwminadjust的情况下,执行s614-8。
222.s614-8、计算当前裁剪比例,根据当前裁剪比例与默认裁剪尺寸计算中间裁剪尺寸。
223.s614-8中,电子设备可以通过公式(3)计算当前裁剪比例dwpercent,并根据dwpercent,通过公式(4)重新计算dwtrimsize,作为中间裁剪尺寸。
224.这里,s614-8的执行过程与s1033-s1034中描述的过程一致,此处不再赘述。
225.s614-9、确定中间裁剪尺寸是否小于预设最小裁剪尺寸。
226.s614-9中,电子设备在中间裁剪尺寸dwtrimsize小于预设最小裁剪尺寸min_trim_size的情况下,执行s614-3,将预设最小裁剪尺寸min_trim_size赋值给dwtrimsize,并将dwtrimsize作为裁剪尺寸;否则,执行s614-10。
227.这里,s614-9至s614-3的执行过程与s1036中描述的过程一致,此处不再赘述。
228.s614-10、确定中间裁剪尺寸是否大于预设最大裁剪尺寸。
229.s614-10中,在中间裁剪尺寸dwtrimsize大于预设最大裁剪尺寸max_trim_size的情况下,执行s614-11,否则,执行s614-12。
230.s614-11、将预设最大裁剪尺寸作为裁剪尺寸。
231.s614-11中,电子设备将max_trim_size赋值给dwtrimsize,并将dwtrimsize作为裁剪尺寸。
232.这里,s614-10至s614-11的执行过程与s1037中描述的过程一致,此处不再赘述。
233.s614-12、将中间裁剪尺寸作为裁剪尺寸。
234.s614-12中,在中间裁剪尺寸dwtrimsize大于min_trim_size,且小于max_trim_size的情况下,电子设备将dwtrimsize作为裁剪尺寸,执行s614-13。
235.s614-13、返回裁剪尺寸。
236.s614-13中,电子设备将通过s614-12得到的dwtrimsize,或者通过s614-3得到的赋值为min_trim_size的dwtrimsize,或者通过s614-11得到的赋值为max_trim_size的dwtrimsize作为裁剪尺寸,返回并继续执行图9中的s615。
237.可以看出,通过调用getprocessmemoryinfo获取进程的工作集和提交内存,然后动态计算采样时间间隔,当确定采样次数达到设定阈值,同时工作集的波动又在合理的范围内的情况下,电子设备调用setprocessworkingsetsize进行工作集裁剪;如此进行周期性地迭代,就可以使常驻进程的工作集占用降低到一个合理的水平。
238.需要说明的是,在一些实施例中,电子设备使用页错误,来作为评估裁剪工作集的
指标。示例性地,在发生较少页错误的情况下,说明进程的工作集较大,进程在运行时很少在工作集之外申请内存分页或磁盘资源,工作集的运行区间可能存在冗余,电子设备可以利用上述实施例中类似的方法,通过对页错误的统计,对进程的工作集进行裁剪。
239.申请人在电脑管家客户端应用本技术实施例中的内存管理方法之后,几个常驻应用程序的工作集占用有了大幅的下降,其中,托盘进程的工作集占用由107.8m下降到49.3m,下降54.27%;实时防护进程的工作集占用由94.5m下降到35.75m,下降62.17%;内存清理进程的工作集占用由38.1m下降到14.1m,下降62.99%。可以看出,本技术实施例的内存管理方法可以大幅降低应用程序的内存占用性能指标,提升了软件性能。
240.下面继续说明本技术实施例提供的内存管理装置455的实施为软件模块的示例性结构,在一些实施例中,如图1所示,存储在存储器450的内存管理装置455中的软件模块可以包括:
241.采样模块4551,用于在当前采样周期的当前次采样过程中,通过对当前进程对应的工作集进行尺寸信息采样,得到当前采样信息,并获取所述工作集对应的当前运行区间;所述当前运行区间包括最小工作集与最大工作集;
242.判定模块4552,用于在通过对比所述当前采样信息与所述当前运行区间,确定所述当前运行区间满足预设裁剪条件,且达到预设采样次数的情况下,获取所述工作集的当前尺寸信息与所述当前进程对应的提交内存;
243.计算模块4553,用于基于所述当前尺寸信息与所述提交内存,计算裁剪尺寸;
244.裁剪模块4554,用于根据所述裁剪尺寸对所述当前运行区间进行裁剪,利用裁剪后的运行区间运行所述当前进程。
245.在一些实施例中,所述判定模块4552,还用于获取波动阈值;所述波动阈值表征所述工作集在所述当前进程的运行过程中出现的最大波动;在所述当前采样信息小于所述最小工作集的情况下,利用所述当前采样信息,更新所述最小工作集与所述波动阈值;在所述当前采样信息大于所述最大工作集的情况下,利用所述当前采样信息,更新所述最大工作集;在所述最小工作集与所述波动阈值之和,大于或等于所述最大工作集的情况下,确定所述当前运行区间满足所述预设裁剪条件。
246.在一些实施例中,所述采样模块4551,还用于在所述当前次采样过程为首次采样的情况下,获取历史采样周期中的历史采样信息;所述首次采样表征在所述当前采样周期中的第一次采样;根据所述历史采样信息与所述当前采样信息,得到所述最大工作集与所述最小工作集。
247.在一些实施例中,所述内存管理装置还包括记录模块,所述记录模块,用于在确定所述当前运行区间满足所述预设裁剪条件,且未达到所述预设采样次数的情况下,记录所述当前运行区间,并进行所述当前采样周期中的下一次采样过程;所述判定模块4552,还用于在所述下一次采样过程中,获取记录的所述当前运行区间,根据所述下一次采样过程对应的采样信息,对所述记录的当前运行区间进行对比与更新,通过所述预设采样次数的采样过程,对所述记录的当前运行区间进行迭代更新。
248.在一些实施例中,所述计算模块4553,还用于在所述最小工作集与所述波动阈值之和,小于所述最大工作集的情况下,对所述工作集重新采样,并根据采样结果重新计算所述最大工作集、所述最小工作集与所述波动阈值,进入下一次采样周期。
249.在一些实施例中,所述判定模块4552,还用于在所述当前采样信息小于预设最小尺寸阈值的情况下,结束所述当前次采样过程,进入所述当前采样周期中的下一次采样过程。
250.在一些实施例中,所述裁剪模块4554,还用于在所述当前尺寸信息大于所述预设最小尺寸阈值的情况下,根据所述当前尺寸信息与预设初始裁剪比例,计算初始裁剪尺寸;根据预设调整上限比例与所述提交内存,得到调整上限值,并根据预设调整下限比例与所述提交内存,得到调整下限值;在所述当前尺寸信息小于所述调整上限值,且大于所述调整下限值的情况下,根据所述调整上限值、所述调整下限值与所述当前尺寸信息,计算当前裁剪比例;根据所述当前裁剪比例对初始裁剪尺寸进行更新,得到中间裁剪尺寸;在所述中间裁剪尺寸大于预设最小裁剪尺寸,且小于预设最大裁剪尺寸的情况下,将所述中间裁剪尺寸作为所述裁剪尺寸。
251.在一些实施例中,所述裁剪模块4554,还用于所述得到中间裁剪尺寸之后,在所述中间裁剪尺寸小于或等于所述预设最小裁剪尺寸的情况下,将所述预设最小裁剪尺寸作为所述裁剪尺寸;在所述中间裁剪尺寸大于或等于所述预设最大裁剪尺寸的情况下,将所述预设最大裁剪尺寸作为所述裁剪尺寸。
252.在一些实施例中,所述裁剪模块4554,还用于计算所述当前尺寸信息与所述调整下限值之间的第一差值,以及所述调整上限值与所述调整下限值之间的第二差值;计算所述第一差值与所述第二差值的比值,作为所述当前裁剪比例。
253.在一些实施例中,所述裁剪模块4554,还用于在所述当前尺寸信息小于或等于所述预设最小尺寸阈值的情况下,将预设最小裁剪尺寸作为所述裁剪尺寸;在所述当前尺寸信息大于或等于所述调整上限值的情况下,不进行剪裁;在所述当前尺寸信息小于或等于所述调整下限值的情况下,将预设最小裁剪尺寸作为所述裁剪尺寸。
254.在一些实施例中,所述裁剪模块4554,还用于所述根据所述裁剪尺寸对所述当前运行区间进行裁剪,利用裁剪后的运行区间运行所述当前进程之后,在所述当前进程的运行过程中,通过下一个采样周期,继续对所述当前进程的运行区间进行裁剪。
255.需要说明的是,以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
256.本技术实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本技术实施例提供的方法,例如,如图2-图10中示出的方法。
257.在一些实施例中,计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
258.在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
259.作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以被存储在保
存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hyper text markup language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
260.作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
261.综上所述,通过对当前进程对应的工作集进行至少一次采样,得到每次采样对应的当前采样信息,以及工作集对应的当前运行区间,可以通过对比表征进程实时内存占用情况的当前采样信息与运行区间,在确定当前运行区间满足预设调整条件,也即当前进程的工作集波动在合理范围内的情况下,基于工作集的当前尺寸信息与进程申请的提交内存,计算对工作集进行裁剪的尺寸,并对工作集的运行空间进行裁剪,实现了在进程运行过程中,根据内存占用的变化自动触发内存优化流程,并根据当前的内存占用情况动态计算内存裁剪的幅度,能够在减小进程占用的冗余内存空间的基础上,保证进程的正常运行,从而优化了应用程序的内存占用,提高了内存管理的效率。并且,每次采样过程的当前运行区间可以是对最小工作集和最大工作集进行过更新得到的,在下一次采样过程中,电子设备可以对更新后的当前运行区间进行进一步的更新,这样可以通过多次采样过程,对当前运行区间进行迭代地、持续地更新,使之逐步趋近于当前进程的工作集实际占用的内存大小。在此基础上进行工作集的剪裁过程,能够进一步提高内存裁剪的精度,并提高内存管理的准确性和效率。
262.以上所述,仅为本技术的实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本技术的保护范围之内。
技术特征:
1.一种内存管理方法,其特征在于,包括:在当前采样周期的当前次采样过程中,通过对当前进程对应的工作集进行尺寸信息采样,得到当前采样信息,并获取所述工作集对应的当前运行区间;所述当前运行区间包括最小工作集与最大工作集;在通过对比所述当前采样信息与所述当前运行区间,确定所述当前运行区间满足预设裁剪条件,且达到预设采样次数的情况下,获取所述工作集的当前尺寸信息与所述当前进程对应的提交内存;基于所述当前尺寸信息与所述提交内存,计算裁剪尺寸;根据所述裁剪尺寸对所述当前运行区间进行裁剪,利用裁剪后的运行区间运行所述当前进程。2.根据权利要求1所述的方法,其特征在于,通过对比所述当前采样信息与所述当前运行区间,确定所述当前运行区间满足预设裁剪条件,包括:获取波动阈值;所述波动阈值表征所述工作集在所述当前进程的运行过程中出现的最大波动;在所述当前采样信息小于所述最小工作集的情况下,利用所述当前采样信息,更新所述最小工作集与所述波动阈值;在所述当前采样信息大于所述最大工作集的情况下,利用所述当前采样信息,更新所述最大工作集;在所述最小工作集与所述波动阈值之和,大于或等于所述最大工作集的情况下,确定所述当前运行区间满足所述预设裁剪条件。3.根据权利要求2所述的方法,其特征在于,所述获取所述工作集对应的当前运行区间,包括:在所述当前次采样过程为首次采样的情况下,获取历史采样周期中的历史采样信息;所述首次采样表征在所述当前采样周期中的第一次采样;根据所述历史采样信息与所述当前采样信息,得到所述最大工作集与所述最小工作集。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:在确定所述当前运行区间满足所述预设裁剪条件,且未达到所述预设采样次数的情况下,记录所述当前运行区间,并进行所述当前采样周期中的下一次采样过程;在所述下一次采样过程中,获取记录的所述当前运行区间,根据所述下一次采样过程对应的采样信息,对所述记录的当前运行区间进行对比与更新,通过所述预设采样次数的采样过程,对所述记录的当前运行区间进行迭代更新。5.根据权利要求2所述的方法,其特征在于,所述方法还包括:在所述最小工作集与所述波动阈值之和,小于所述最大工作集的情况下,对所述工作集重新采样,并根据采样结果重新计算所述最大工作集、所述最小工作集与所述波动阈值,进入下一次采样周期。6.根据权利要求5所述的方法,其特征在于,所述方法还包括:在所述当前采样信息小于预设最小尺寸阈值的情况下,结束所述当前次采样过程,进入所述当前采样周期中的下一次采样过程。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述基于所述当前尺寸信息与所述提交内存,计算裁剪尺寸,包括:在所述当前尺寸信息大于所述预设最小尺寸阈值的情况下,根据所述当前尺寸信息与预设初始裁剪比例,计算初始裁剪尺寸;根据预设调整上限比例与所述提交内存,得到调整上限值,并根据预设调整下限比例与所述提交内存,得到调整下限值;在所述当前尺寸信息小于所述调整上限值,且大于所述调整下限值的情况下,根据所述调整上限值、所述调整下限值与所述当前尺寸信息,计算当前裁剪比例;根据所述当前裁剪比例对初始裁剪尺寸进行更新,得到中间裁剪尺寸;在所述中间裁剪尺寸大于预设最小裁剪尺寸,且小于预设最大裁剪尺寸的情况下,将所述中间裁剪尺寸作为所述裁剪尺寸。8.根据权利要求7所述的方法,其特征在于,所述得到中间裁剪尺寸之后,所述方法还包括:在所述中间裁剪尺寸小于或等于所述预设最小裁剪尺寸的情况下,将所述预设最小裁剪尺寸作为所述裁剪尺寸;在所述中间裁剪尺寸大于或等于所述预设最大裁剪尺寸的情况下,将所述预设最大裁剪尺寸作为所述裁剪尺寸。9.根据权利要求7所述的方法,其特征在于,所述根据所述调整上限值、所述调整下限值与所述当前尺寸信息,计算当前裁剪比例,包括:计算所述当前尺寸信息与所述调整下限值之间的第一差值,以及所述调整上限值与所述调整下限值之间的第二差值;计算所述第一差值与所述第二差值的比值,作为所述当前裁剪比例。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:在所述当前尺寸信息小于或等于所述预设最小尺寸阈值的情况下,将预设最小裁剪尺寸作为所述裁剪尺寸;在所述当前尺寸信息大于或等于所述调整上限值的情况下,不进行剪裁;在所述当前尺寸信息小于或等于所述调整下限值的情况下,将预设最小裁剪尺寸作为所述裁剪尺寸。11.根据权利要求1-6任一项,或者,权利要求8-10任一项所述的方法,其特征在于,所述根据所述裁剪尺寸对所述当前运行区间进行裁剪,利用裁剪后的运行区间运行所述当前进程之后,所述方法还包括:在所述当前进程的运行过程中,通过下一个采样周期,继续对所述当前进程的运行区间进行裁剪。12.一种内存管理装置,其特征在于,包括:采样模块,用于在当前采样周期的当前次采样过程中,通过对当前进程对应的工作集进行尺寸信息采样,得到当前采样信息,并获取所述工作集对应的当前运行区间;所述当前运行区间包括最小工作集与最大工作集;判定模块,用于在通过对比所述当前采样信息与所述当前运行区间,确定所述当前运行区间满足预设裁剪条件,且达到预设采样次数的情况下,获取所述工作集的当前尺寸信
息与所述当前进程对应的提交内存;计算模块,用于基于所述当前尺寸信息与所述提交内存,计算裁剪尺寸;裁剪模块,用于根据所述裁剪尺寸对所述当前运行区间进行裁剪,利用裁剪后的运行区间运行所述当前进程。13.一种电子设备,其特征在于,包括:存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至11任一项所述的方法。14.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于被处理器执行时,实现权利要求1至11任一项所述的方法。15.一种计算机程序产品,包括计算机程序或指令,其特征在于,所述计算机程序或指令被处理器执行时实现权利要求1至11任一项所述的方法。
技术总结
本申请提供了一种内存管理方法、装置、设备、计算机程序及存储介质。本申请实施例可应用于云技术、人工智能、智慧交通、辅助驾驶等各种场景,方法包括:在当前采样周期的当前次采样过程中,通过对当前进程对应的工作集进行尺寸信息采样,得到当前采样信息,并获取工作集对应的当前运行区间;在通过对比当前采样信息与当前运行区间,确定当前运行区间满足预设裁剪条件,且达到预设采样次数的情况下,获取工作集的当前尺寸信息与当前进程对应的提交内存;基于当前尺寸信息与提交内存,计算裁剪尺寸;根据裁剪尺寸对当前运行区间进行裁剪,利用裁剪后的运行区间运行当前进程。通过本申请,能够优化应用程序的内存占用,提高内存管理的效率。理的效率。理的效率。
技术研发人员:罗谷才 杨传辉
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.01.27
技术公布日:2023/8/8
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
