CN116954925A - 内存释放方法、装置、电子设备及介质 - Google Patents

内存释放方法、装置、电子设备及介质 Download PDF

Info

Publication number
CN116954925A
CN116954925A CN202311009039.5A CN202311009039A CN116954925A CN 116954925 A CN116954925 A CN 116954925A CN 202311009039 A CN202311009039 A CN 202311009039A CN 116954925 A CN116954925 A CN 116954925A
Authority
CN
China
Prior art keywords
memory
exchange management
management unit
release
anonymous page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311009039.5A
Other languages
English (en)
Inventor
汪劼文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Vivo Mobile Communication Co Ltd
Original Assignee
Vivo Mobile Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Vivo Mobile Communication Co Ltd filed Critical Vivo Mobile Communication Co Ltd
Priority to CN202311009039.5A priority Critical patent/CN116954925A/zh
Publication of CN116954925A publication Critical patent/CN116954925A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种内存释放方法、装置、电子设备及介质,属于内存管理技术领域,该内存释放方法包括:在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据;在退出第一进程之后,在满足内存释放条件的情况下,释放该第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。

Description

内存释放方法、装置、电子设备及介质
技术领域
本申请属于内存管理技术领域,具体涉及一种内存释放方法、装置、电子设备及介质。
背景技术
在应用的多进程退出过程中,通常需要先释放交换分区中的资源,再释放该进程的其他资源。并且,为了保证数据的准确性,多个进程只能逐一进行资源释放和退出,而不能同时进行。
因此,上述方法中,进程的总体退出时间长。如此,导致资源利用效率低。
发明内容
本申请实施例的目的是提供一种内存释放方法、装置、电子设备及介质,提高了资源利用效率。
第一方面,本申请实施例提供了一种内存释放方法,该方法包括:在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据;在退出第一进程之后,在满足内存释放条件的情况下,释放该第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。
第二方面,本申请实施例提供了一种内存释放装置,该装置包括:第一释放模块和第二释放模块,其中:第一释放模块,用于在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据;第二释放模块,用于在第一释放模块释放上述其他数据之后,在退出第一进程之后,在满足内存释放条件的情况下,释放该第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请实施例中,在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据。在退出该第一进程之后,在满足内存释放条件的情况下,释放上述第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。在本方案中,通过在进程退出过程时,不直接对该进程对应的内存交换管理单元中存储的匿名页内存数据进行释放,而是将该匿名页内存数据的释放延后至进程退出之后。在进程退出过程中,仅释放该进程对应的除该匿名页内存数据以外的其他数据,提升了进程总体的退出速度,进而提高了资源利用效率。
附图说明
图1是本申请实施例提供的一种内存释放方法的流程示意图之一;
图2是本申请实施例提供的一种内存释放方法的流程示意图之二;
图3是本申请实施例提供的一种内存释放方法的流程示意图之三;
图4是本申请实施例提供的一种内存释放方法的流程示意图之四;
图5是本申请实施例提供的内存回收进程和回收代理进程的使用实例示意图;
图6是本申请实施例提供的一种内存释放方法的流程示意图之五;
图7是本申请实施例提供的一种内存释放装置的结构示意图之一;
图8是本申请实施例提供的一种内存释放装置的结构示意图之二;
图9是本申请实施例提供的一种内存释放装置的结构示意图之三;
图10是本申请实施例提供的一种内存释放装置的结构示意图之四;
图11是本申请实施例提供的一种电子设备的硬件结构示意图之一;
图12是本申请实施例提供的一种电子设备的硬件结构示意图之二。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请的说明书和权利要求书中的术语“至少一个(项)”、“至少之一”等指其包含对象中的任意一个、任意两个或两个以上的组合。例如,a、b、c中的至少一个(项),可以表示:“a”、“b”、“c”、“a和b”、“a和c”、“b和c”以及“a、b和c”,其中a,b,c可以是单个,也可以是多个。同理,“至少两个(项)”是指两个或两个以上,其表达的含义与“至少一个(项)”类似。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的内存释放方法、装置、电子设备及介质进行详细地说明。
随着移动终端所提供的功能的多样化,用户需要使用的应用程序也在不断增加。在用户使用电子设备的过程中,由于电子设备中的应用程序越来越多,而内存资源有限,在开启过多应用程序时,会出现内存空间不足的情况,影响应用程序的正常使用,导致系统运行效率降低。因此,为了合理分配内存空间,提高系统资源利用率,终端可以采用内存回收,或者,退出部分应用进程的方式,以达到释放内存资源的目的。
在相关技术中,通常会使用交换分区(即swap分区)进行内存回收。一般的,swap分区主要是在系统内存空间不足时,通过将部分暂时不用的内存数据存储在swap分区中,从而释放部分内存空间,这使得操作系统可以保持正常运行,同时避免系统因为内存不足而系统崩溃。
示例性地,每个swap分区中包含多个内存管理交换单元(即swap entry),该swapentry可以称为slot,每个swap entry的大小和内存页的大小相同。可以理解的是,当发生内存回收时,一个内存页会被回收到一个swap entry中,在后续需要使用这部分swap资源时,便可以重新从该swap资源对应的swap entry中读取,其中,该swap资源为swap entry中回收的内存页。
示例性地,上述内存页包括匿名页(Anonymous Page)。其中,上述匿名页是一种特殊类型的内存页,它在内核中用于匿名文件的内存映射,上述“匿名”可以认为是无关联文件。一般的,匿名页通常用于存储进程的堆(Heap)和栈(Stack)等动态分配的数据。换句话说,匿名页在进程的运行中起着重要的作用,特别是在动态内存分配和堆栈操作方面,通过使用匿名页,进程可以方便地进行内存管理和动态数据存储,而无需关心具体的物理内存位置和文件关联。由于匿名页中存储的堆或栈内存数据可能还需要被再次访问,因此,在系统内存不足时,可以将运行的进程的匿名页的匿名页内存数据存储至swap分区中。
一般的,应用进程的退出是指用户手动杀应用,即用户主动操作关闭应用进程时,或者系统自动杀应用,即系统自动关闭已打开的应用的进程时,进程管理单元及相关内存资源进行释放和退出。
一般的,在进程退出过程中,需要进程退出之后才能完全释放相关资源,并且进程退出过程本身也会占用系统资源,例如,中央处理器(Central Processing Unit,CPU)资源,或,图形处理器(Graphics Processing Unit,GPU)资源,如果退出时间太长,可能会影响其他应用程序的正常使用。
在相关技术中,应用的多进程退出过程通常是先释放swap资源,再释放进程的其他相关资源。同时,为了保证数据的准确性,多进程需要逐个释放内存资源进行退出。
然而,在使用上述方法退出应用多进程时,由于只能串行操作,即不能同时进行多个进程的内存资源释放和退出,导致进程总体退出时间长,资源利用效率低,还可能影响到其他应用程序的正常使用。
在本申请实施例提供的内存释放方法中,在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据。在退出该第一进程之后,在满足内存释放条件的情况下,释放上述第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。在本方案中,通过在进程退出过程中,不直接对该进程对应的内存交换管理单元中存储的匿名页内存数据进行释放,而是将该匿名页内存数据的释放延后至进程退出之后。在进程退出过程中,仅释放该进程对应的除该匿名页内存数据以外的其他数据,从而提升了进程总体的退出速度,进而提高了资源利用效率。
本申请实施例提供的内存释放方法的执行主体为内存释放装置。该内存释放装置可以为电子设备,或者,该电子设备中用于执行该内存释放方法的处理单元或控制单元,本申请实施例对此不作限定。以下将以执行主体为电子设备为例对本申请实施例提供的内存释放方法进行说明。
图1示出了本申请实施例提供的一种内存释放方法,如图1所示,本申请实施例提供的一种内存释放方法包括如下步骤201和步骤202:
步骤201:在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据。
在本申请的一些实施例中,上述第一进程可以包括一个应用的一个或多个进程,或者,上述第一进程可以包括多个应用的多个进程,本申请对此不做限定。
在本申请的一些实施例中,上述第一进程对应的内存交换管理单元为存储有第一进程的匿名页内存数据的内存交换管理单元。
在本申请的一些实施例中,上述第一进程对应的内存交换管理单元包括内存交换分区中的至少一个内存交换管理单元,其中,上述内存交换分区用于内存回收。示例性地,上述的内存交换分区可以为swap分区,上述第一进程对应的内存交换管理单元可以为swap分区中的一个或多个swap entry。
在本申请的一些实施例中,上述第一匿名页内存数据可以为第一进程的匿名页的内存数据。
在本申请的一些实施例中,上述第一进程的除上述第一匿名页内存数据以外的其他数据包括以下至少之一:GPU资源,文件页内存数据,进程描述符,CPU资源。应注意的是,上述其他数据并不存储于交换分区中。
在本申请的一些实施例中,在电子设备获取到指示第一进程退出的进程退出指令的情况下,电子设备基于该进程退出指令触发进程退出流程。一种实例中,上述第一进程退出指令由用户触发。另一种实例中,上述第一进程退出指令由系统自行生成。
在本申请的一些实施例中,在上述步骤201之前,在运行第一进程的过程中,当系统内存空间不足,可能会触发内存回收进程对该第一进程的第一匿名页内存数据进行回收。
示例性地,在内存回收过程中,电子设备可以通过内存回收进程来为该第一进程分配swap分区中的内存交换管理单元,以将该第一进程的第一匿名页内存数据存储至该第一进程对应的内存交换管理单元。
步骤202:在退出第一进程之后,在满足内存释放条件的情况下,释放该第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。
在本申请的一些实施例中,上述满足内存释放条件包括以下至少之一:
条件1:监测到待释放的内存交换管理单元的数量大于或等于预定阈值,上述待释放的内存交换管理单元为已退出的进程所对应的存储有匿名页内存数据的内存交换管理单元;
条件2:在运行内存回收进程的情况下,该第一进程对应的内存交换管理单元为标记为可用的内存交换管理单元。
在本申请实施例中,在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据。在退出该第一进程之后,在满足内存释放条件的情况下,释放上述第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。在本方案中,通过在进程退出过程时,不直接对该进程对应的内存交换管理单元中存储的匿名页内存数据进行释放,而是将该匿名页内存数据的释放延后至进程退出之后。在进程退出过程中,仅释放该进程对应的除该匿名页内存数据以外的其他数据,提升了进程总体的退出速度,进而提高了资源利用效率。
在本申请的一些实施例中,结合图1,如图2所示,本申请实施例提供的内存释放方法还可以包括步骤301:
步骤301:在上述第一进程的退出过程中,记录该第一进程对应的内存交换管理单元的信息。
进一步地,结合上述步骤301,上述步骤202可以包括如下步骤202a:
步骤202a:在退出第一进程之后,在监测到记录的内存交换管理单元的数量大于或等于预定阈值的情况下,释放上述记录的内存交换管理单元中存储的匿名页内存数据,上述记录的内存交换管理单元包括该第一进程对应的内存交换管理单元。
在本申请的一些实施例中,上述第一进程对应的内存交换管理单元的信息包括以下至少之一:上述第一进程对应的内存交换管理单元的位置,以及上述第一进程对应的内存交换管理单元的数量。
在本申请的一些实施例中,在上述第一进程的退出过程中,电子设备可以从内存交换分区中,确定该第一进程对应的内存交换管理单元,获取该内存交换管理单元在该内存交换分区的信息,从而对该第一进程对应的内存交换管理单元进行记录。例如,可以存储第一进程对应的内存交换管理单元的位置,如,第一进程对应内存交换管理单元的编号或标识,第一进程对应内存交换管理单元的数量。
在本申请的一些实施例中,电子设备可以按照预定周期周期性地主动监测已记录的待释放的内存交换管理单元的数量。或者,电子设备可以按照用户的指示监测已记录的待释放的内存交换管理单元的数量。
在本申请的一些实施例中,电子设备可以通过初始化一个计数器,用于监测已记录的待释放的内存交换管理单元的总数量。例如,当第一进程退出后,为计数器的值增加第一进程对应内存交换管理单元的数量。
需要说明的是,上述“记录的内存交换管理单元”是指:内存交换分区中,已退出的进程所对应的存储有匿名页内存数据的内存交换管理单元。
在本申请的一些实施例中,上述“释放上述记录的内存交换管理单元中存储的匿名页内存数据”包括:逐个依次释放上述记录的待释放的每个内存交换管理单元中存储的匿名页内存数据。
在本申请的一些实施例中,上述预定阈值可以为定值,或者,上述预定阈值是基于电子设备的硬件参数、运行参数、内存参数等确定的。上述预定阈值可以是电子设备自行设定的,也可以是由用户设定的,本申请对此不作限定。
需要说明的是,上述步骤301和步骤201可以同时执行,也可以先执行步骤301再执行步骤201,还可以先执行步骤201再执行步骤301,本申请对于上述步骤301和步骤201的执行顺序不作限定。
在本申请的一些实施例中,上述步骤202a可以包括如下步骤202a1:
步骤202a1:在退出第一进程之后,在监测到记录的内存交换管理单元的数量大于或等于预定阈值、且系统空闲的情况下,释放上述记录的内存交换管理单元中存储的匿名页内存数据。
在本申请的一些实施例中,由于内存交换管理单元中存储的数据的释放会占用系统的大量资源,因此,在退出第一进程之后,当监测到记录的待释放的内存交换管理单元的数量大于或等于预定阈值的情况下,即确定电子设备需要对记录的待释放的内存交换管理单元进行统一释放时,可以选择系统空闲时进行释放,避免其他应用的正常运行。
如此,通过在每次进程退出过程中,记录该进程对应的内存交换管理单元的位置,从而可以在监测到记录的待释放的内存交换管理单元的数量大于或等于阈值时,统一对所有记录的待释放的内存交换管理单元中存储的匿名页内存数据进行释放,实现了内存资源的异步释放,提升了进程总体的退出速度,加快了内存资源的释放速度,提高了内存资源的释放效率。
在本申请的一些实施例中,如图3所示,在上述步骤202a或步骤202a1中“释放上述记录的内存交换管理单元中存储的匿名页内存数据”之前,本申请实施例提供的内存释放方法还可以包括步骤302和步骤303:
步骤302:初始化回收代理进程。
步骤303:通过回收代理进程,监控记录的内存交换管理单元的数量。
在本申请的一些实施例中,上述回收代理进程用于监控记录的内存交换管理单元的数量。
在本申请的一些实施例中,在电子设备开机时,系统会初始化回收代理进程。这样在电子设备开机时,便初始化了一个回收代理进程,从而使得电子设备可以通过该回收代理进程在电子设备开机后便可执行监控行为,进而能够及时释放相关内存数据。
在本申请的一些实施例中,上述回收代理进程包括以下任一项:内核线程,监控进程。
应注意的是,图3中所示出的步骤302和步骤303与步骤202a间的关系仅是本申请实施例提供的内存释放方法的一种示例。
如此,通过初始化一个回收代理进程,使得电子设备可以通过该回收代理进程对记录的待释放的内存交换管理单元的数量进行实时监控,以在适当的情况下主动释放记录的待释放的内存交换管理单元中存储的数据,进而释放已退出进程的匿名页内存数据所占用的内存交换空间资源。
在本申请的一些实施例中,结合图1,如图4所示,本申请实施例提供的内存释放方法还可以包括步骤401:
步骤401:在第一进程的退出过程中,为该第一进程对应的内存交换管理单元添加可用标识,上述可用标识用于标记内存交换管理单元可用。
示例性地,上述可用标识可以为任意能够标记该内存交换管理单元可用的标识,本申请对可用标识形态不做限定。
需要说明的是,上述“内存交换管理单元可用”是指该内存交换管理单元可以继续用于内存回收。
进一步地,结合步骤401,上述步骤202可以包括如下步骤202b:
步骤202b:在退出第一进程之后,在运行内存回收进程的情况下,释放该第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。
进一步地,结合步骤202b,在步骤202b之后,本申请实施例提供的内存释放方法还可以包括如下步骤203:
步骤203:通过内存回收进程,将第二进程对应的第二匿名页内存数据存入该第一进程对应的内存交换管理单元中。
在本申请的一些实施例中,上述内存回收进程用于触发内存回收流程。
可以理解的是,上述内存回收进程用于将第一进程对应的内存交换管理单元分配给第二进程,并将该第二进程的第二匿名页内存数据存储至该内存交换管理单元。
示例性地,上述内存回收进程可以包括kswapd等。
示例性地,在系统内存空间不足时,便可触发内存回收进程对当前进行的进程的匿名页内存数据进行内存回收。
举例说明,如图5所示,在需要进行内存回收时,电子设备可以通过内存回收进程对多个进程进行内存回收,如图5所示,电子设备可以将进程1和进程2的部分内存数据交换至交换分区(即swap分区)中。在后续使用中,电子设备可以在初始化回收代理进程后,通过该回收代理进程监控swap分区中需要代理释放的进程资源。
在本申请的一些实施例中,上述第二进程可以为当前运行的应用程序的至少一个进程,上述当前运行的应用程序可以为一个或多个。应注意的是,上述当前运行的应用程序可以与第一进程对应的应用程序相同或不同。
在本申请的一些实施例中,上述第二匿名页内存数据可以为第二进程对应的全部或部分匿名页内存数据。
在本申请的一些实施例中,电子设备在将上述第二匿名页内存数据存入该第一进程对应的内存交换管理单元中之后,由于第二匿名页内存数据可能需要再次被使用,因此,在退出该第二进程之前,该内存交换管理单元不能释放其存储的第二匿名页内存数据。此时,电子设备可以取消该内存交换管理单元上添加的可用标识,避免该内存管理单元所存储的数据被释放。
需要说明的是,上述步骤401和步骤201可以同时执行,也可以先执行步骤401再执行步骤201,还可以先执行步骤201再执行步骤401,本申请对于上述步骤401和步骤201的执行顺序不作限定。
在本申请的一些实施例中,在退出第一进程之后,在运行内存回收进程的情况下,则电子设备可以从内存交换分区中查找带有可用标识的内存交换管理单元,然后,从中选择一个或多个带有可用标识的内存交换管理单元,释放其存储的内存数据,并通过该内存交换管理单元对第二进程的第二匿名页内存数据进行内存回收。从而在保证了内存资源释放效率的前提下,不影响后续内存交换分区的使用和其他进程的内存回收流程的正常进行。
如此,通过在进程退出的过程中,为进程对应的内存交换管理单元添加可用标识,从而可以在该进程退出后,并在后续需要使用该内存交换管理单元进行内存回收的情况下,再对该内存交换管理单元中存储的数据进行释放,从而能够对内存交换管理单元中存储的内存资源实现异步释放,不仅提升了进程退出速度,还提高了内存资源的释放效率,减少了进程退出过程对系统资源的占用,进而提高了资源利用效率。
在本申请的一些实施例中,本申请实施例提供的内存释放方法还可以包括步骤501:
步骤501:删除上述记录的内存交换管理单元的信息。
在本申请的一些实施例中,当第一进程对应的内存交换管理单元中存储的数据被释放后,可以删除该内存交换管理单元所记录的信息,以便后续再次使用该内存交换管理单元。
在本申请的一些实施例中,在上述步骤202a或步骤202a1中“释放上述记录的内存交换管理单元中存储的数据”之后,电子设备可以将用于监测已记录的内存交换管理单元的总数量的计数器的值归零。
在本申请的一些实施例中,在上述步骤202b中“释放该第一进程对应的内存交换管理单元中存储的数据”之后,电子设备可以在用于监测已记录的待释放的内存交换管理单元的总数量的计数器的值中,减去第一进程对应的内存交换管理单元的数量。
以交换分区(即swap分区)为例,本申请实施例提供一种内存释放方法,如图6所示,该内存释放方可以包括如下步骤10~步骤16:
步骤10:在使用电子设备的过程中,若开启多个应用,则可以通过内存回收,将后台运行的应用1的部分数据交换至swap分区的内存交换管理单元(即swap entry)中。
步骤11:在杀应用1的场景下,在被杀的应用1的进程退出流程中,此前被交换到swap分区中的数据不在此时释放,此时,仅记录需要释放的swap entry,并进入后续该应用的进程的其他资源的释放流程,以释放该应用的进程的其他资源,上述记录的swap entry为此前用于回收该应用1的内存数据的swap entry。
步骤12:在杀某个应用的场景下,在被杀的应用的进程退出流程中,此前被交换到swap分区中的数据不在此时释放,此时,可以标记需要释放的swap entry可用,并进入后续该应用的进程的其他资源的释放流程,以释放该应用的进程的其他资源,上述标记的swapentry为此前用于回收该应用1的内存数据的swap entry。
示例性地,上述进程退出流程可以认为是以下至少一种场景所触发的:用户手动杀单个应用,一键查杀,在开启某个应用后所启动的杀进程的过程,系统主动杀进程。
示例性地,在上述该应用1的进程的其他资源释放完成,进程完成退出。
步骤13、在电子设备开机时,初始化一个回收代理进程,如,内核线程或其他监控进程,以监控已记录的待释放的swap entry的量。
步骤14、当已记录的待释放swap entry的量超过一定预定阈值时,则电子设备主动释放已记录的待释放的swap entry中存储的数据,直到已记录的待释放的swap entry中的数据全部释放为止。
步骤15、在电子设备启动某一应用2并放置在后台的情况下,可以释放带有可用标记的待释放的swap entry中的数据,然后,使用该带有可用标记的待释放的swap entry对该应用2进行内存回收,写入新数据。
步骤16、当已记录的待释放的swap entry被释放后,电子设备可以删除所记录的已释放的swap entry的信息。
如此,在进程退出的过程中,通过仅释放进程对应的除swap entry中存储的数据以外的其他内存资源,记录进程对应的swap entry或标记进程对应的swap entry为可用,将swap entry中存储的数据的释放流程延后至了进程退出之后,不仅提升了进程退出速度,还提高了内存资源的释放效率,减少了进程退出过程对系统资源的占用,进而提高了资源利用效率。
需要说明的是,上述各个方法实施例,或者各个方法实施例中的各种可能的实现方式均可以单独执行,也可以任意两个或两个以上相互结合执行,具体可以根据实际使用需求确定,本申请实施例对此不做限制。
本申请实施例提供的内存释放方法,执行主体可以为内存释放装置。本申请实施例中以内存释放装置执行内存释放方法为例,说明本申请实施例提供的内存释放装置。
本申请实施例提供一种内存释放装置,如图7所示,该内存释放装置600包括:第一释放模块601和第二释放模块602,其中:
第一释放模块601,用于在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据;第二释放模块602,用于在第一释放模块601释放上述其他数据之后,在退出第一进程之后,在满足内存释放条件的情况下,释放上述第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。
在本申请的一些实施例中,结合图7,如图8所示,该内存释放装置600还包括:记录模块603。记录模块603,用于在第一进程的退出过程中,记录第一进程对应的内存交换管理单元的位置;第二释放模块602,具体用于在监测到记录的内存交换管理单元的数量大于或等于预定阈值的情况下,释放上述记录的内存交换管理单元中存储的匿名页内存数据,上述记录的内存交换管理单元包括第一进程对应的内存交换管理单元。
在本申请的一些实施例中,上述第二释放模块602,具体用于:在监测到记录的内存交换管理单元的数量大于或等于预定阈值、且系统空闲的情况下,释放上述记录的内存交换管理单元中存储的匿名页内存数据。
在本申请的一些实施例中,结合图7,如图9所示,该内存释放装置600还包括:初始化模块604和监控模块605;初始化模块604,用于在第二释放模块602释放上述记录的内存交换管理单元中存储的数据之前,初始化回收代理进程;监控模块605,用于通过初始化模块604初始化的回收代理进程,监控记录的内存交换管理单元的数量。
在本申请的一些实施例中,结合图7,如图10所示,该内存释放装置600还包括:添加模块606和存储模块607;添加模块606,用于在第一进程的退出过程中,为第一进程对应的内存交换管理单元添加可用标识,上述可用标识用于标记内存交换管理单元可用;第二释放模块602,具体用于在运行内存回收进程的情况下,释放第一进程对应的内存交换管理单元中存储的第一匿名页内存数据;存储模块607,用于在第二释放模块602释放第一进程对应的内存交换管理单元中存储的第一匿名页内存数据之后,通过内存回收进程,将第二进程对应的第二匿名页内存数据存入第一进程对应的内存交换管理单元中。
在本申请实施例提供的内存释放装置中,在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据。在退出该第一进程之后,在满足内存释放条件的情况下,释放上述第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。在本方案中,通过在进程退出过程时,不直接对该进程对应的内存交换管理单元中存储的匿名页内存数据进行释放,而是将该匿名页内存数据的释放延后至进程退出之后。在进程退出过程中,仅释放该进程对应的除该匿名页内存数据以外的其他数据,提升了进程总体的退出速度,进而提高了资源利用效率。
本申请实施例中的内存释放装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personalcomputer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的内存释放装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的内存释放装置能够实现图1至图6的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图11所示,本申请实施例还提供一种电子设备700,包括处理器701和存储器702,存储器702上存储有可在所述处理器701上运行的程序或指令,该程序或指令被处理器701执行时实现上述内存释放方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图12为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备100包括但不限于:射频单元101、网络模块102、音频输出单元103、输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、以及处理器110等部件。
本领域技术人员可以理解,电子设备100还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器110逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图12中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器110,用于在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据。
处理器110,还用于在释放上述其他数据之后,在退出第一进程之后,在满足内存释放条件的情况下,释放上述第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。
在本申请的一些实施例中,处理器110,还用于在上述第一进程的退出过程中,记录该第一进程对应的内存交换管理单元的位置;处理器110,具体用于在监测到记录的内存交换管理单元的数量大于或等于预定阈值的情况下,释放上述记录的内存交换管理单元中存储的匿名页内存数据,上述记录的内存交换管理单元包括上述第一进程对应的内存交换管理单元。
在本申请的一些实施例中,处理器110,具体用于:在监测到记录的内存交换管理单元的数量大于或等于预定阈值、且系统空闲的情况下,释放上述记录的内存交换管理单元中存储的匿名页内存数据。
在本申请的一些实施例中,处理器110,还用于在释放上述记录的内存交换管理单元中存储的数据之前,初始化回收代理进程;还用于通过回收代理进程,监控记录的内存交换管理单元的数量。
在本申请的一些实施例中,处理器110,还用于在第一进程的退出过程中,为第一进程对应的内存交换管理单元添加可用标识,上述可用标识用于标记内存交换管理单元可用;还在运行内存回收进程的情况下,释放第一进程对应的内存交换管理单元中存储的第一匿名页内存数据;存储器109,用于在处理器110释放第一进程对应的内存交换管理单元中存储的第一匿名页内存数据之后,通过内存回收进程,将第二进程对应的第二匿名页内存数据存入第一进程对应的内存交换管理单元中。
在本申请实施例提供的电子设备中,在第一进程的退出过程中,释放上述第一进程对应的除第一匿名页内存数据以外的其他数据,上述第一匿名页内存数据为存储在第一进程对应的内存交换管理单元中的内存数据。在退出该第一进程之后,在满足内存释放条件的情况下,释放上述第一进程对应的内存交换管理单元中存储的第一匿名页内存数据。在本方案中,通过在进程退出过程时,不直接对该进程对应的内存交换管理单元中存储的匿名页内存数据进行释放,而是将该匿名页内存数据的释放延后至进程退出之后。在进程退出过程中,仅释放该进程对应的除该匿名页内存数据以外的其他数据,提升了进程总体的退出速度,进而提高了资源利用效率。
应理解的是,本申请实施例中,输入单元104可以包括图形处理器(GraphicsProcessing Unit,GPU)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元106可包括显示面板1061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板1061。用户输入单元107包括触控面板1071以及其他输入设备1072中的至少一种。触控面板1071,也称为触摸屏。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器109可以包括易失性存储器或非易失性存储器,或者,存储器109可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器109包括但不限于这些和任意其它适合类型的存储器。
处理器110可包括一个或多个处理单元;可选的,处理器110集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述内存释放方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述内存释放方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述内存释放方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (12)

1.一种内存释放方法,其特征在于,所述方法包括:
在第一进程的退出过程中,释放所述第一进程对应的除第一匿名页内存数据以外的其他数据,所述第一匿名页内存数据为存储在所述第一进程对应的内存交换管理单元中的内存数据;
在退出所述第一进程之后,在满足内存释放条件的情况下,释放所述第一进程对应的内存交换管理单元中存储的所述第一匿名页内存数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一进程的退出过程中,记录所述第一进程对应的内存交换管理单元的信息;
所述在满足内存释放条件的情况下,释放所述第一进程对应的内存交换管理单元中存储的所述第一匿名页内存数据,包括:
在监测到记录的内存交换管理单元的数量大于或等于预定阈值的情况下,释放所述记录的内存交换管理单元中存储的匿名页内存数据,所述记录的内存交换管理单元包括所述第一进程对应的内存交换管理单元。
3.根据权利要求2所述的方法,其特征在于,所述在监测到记录的内存交换管理单元的数量大于或等于预定阈值的情况下,释放所述记录的内存交换管理单元中存储的匿名页内存数据,包括:
在监测到记录的内存交换管理单元的数量大于或等于所述预定阈值、且系统空闲的情况下,释放所述记录的内存交换管理单元中存储的匿名页内存数据。
4.根据权利要求2所述的方法,其特征在于,所述释放所述记录的内存交换管理单元中存储的匿名页内存数据之前,所述方法还包括:
初始化回收代理进程;
通过所述回收代理进程,监控记录的内存交换管理单元的数量。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
在所述第一进程的退出过程中,为所述第一进程对应的内存交换管理单元添加可用标识,所述可用标识用于标记内存交换管理单元可用;
所述在满足内存释放条件的情况下,释放所述第一进程对应的内存交换管理单元中存储的所述第一匿名页内存数据,包括:
在运行内存回收进程的情况下,释放所述第一进程对应的内存交换管理单元中存储的所述第一匿名页内存数据;
所述在运行内存回收进程的情况下,释放所述第一进程对应的内存交换管理单元中存储的所述第一匿名页内存数据之后,所述方法还包括:
通过所述内存回收进程,将第二进程对应的第二匿名页内存数据存入所述第一进程对应的内存交换管理单元中。
6.一种内存释放装置,其特征在于,所述装置包括:第一释放模块和第二释放模块,其中:
所述第一释放模块,用于在第一进程的退出过程中,释放所述第一进程对应的除第一匿名页内存数据以外的其他数据,所述第一匿名页内存数据为存储在所述第一进程对应的内存交换管理单元中的内存数据;
所述第二释放模块,用于在所述第一释放模块释放所述其他数据之后,在退出所述第一进程之后,在满足内存释放条件的情况下,释放所述第一进程对应的内存交换管理单元中存储的所述第一匿名页内存数据。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:记录模块;
所述记录模块,用于在所述第一进程的退出过程中,记录所述第一进程对应的内存交换管理单元的信息;
所述第二释放模块,具体用于在监测到记录的内存交换管理单元的数量大于或等于预定阈值的情况下,释放所述记录的内存交换管理单元中存储的匿名页内存数据,所述记录的内存交换管理单元包括所述第一进程对应的内存交换管理单元。
8.根据权利要求7所述的装置,其特征在于,所述第二释放模块,具体用于:
在监测到记录的内存交换管理单元的数量大于或等于所述预定阈值、且系统空闲的情况下,释放所述记录的内存交换管理单元中存储的匿名页内存数据。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:初始化模块和监控模块;
所述初始化模块,用于在所述第二释放模块释放所述记录的内存交换管理单元中存储的匿名页内存数据之前,初始化回收代理进程;
所述监控模块,用于通过所述初始化模块初始化的所述回收代理进程,监控记录的内存交换管理单元的数量。
10.根据权利要求6至9任一项所述的装置,其特征在于,所述装置还包括:添加模块和存储模块;
所述添加模块,用于在所述第一进程的退出过程中,为所述第一进程对应的内存交换管理单元添加可用标识,所述可用标识用于标记内存交换管理单元可用;
所述第二释放模块,具体用于在运行内存回收进程的情况下,释放所述第一进程对应的内存交换管理单元中存储的所述第一匿名页内存数据;
所述存储模块,用于在所述第二释放模块释放所述第一进程对应的内存交换管理单元中存储的所述第一匿名页内存数据之后,通过所述内存回收进程,将第二进程对应的第二匿名页内存数据存入所述第一进程对应的内存交换管理单元中。
11.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至5任一项所述的内存释放方法的步骤。
12.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至5任一项所述的内存释放方法的步骤。
CN202311009039.5A 2023-08-10 2023-08-10 内存释放方法、装置、电子设备及介质 Pending CN116954925A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311009039.5A CN116954925A (zh) 2023-08-10 2023-08-10 内存释放方法、装置、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311009039.5A CN116954925A (zh) 2023-08-10 2023-08-10 内存释放方法、装置、电子设备及介质

Publications (1)

Publication Number Publication Date
CN116954925A true CN116954925A (zh) 2023-10-27

Family

ID=88454664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311009039.5A Pending CN116954925A (zh) 2023-08-10 2023-08-10 内存释放方法、装置、电子设备及介质

Country Status (1)

Country Link
CN (1) CN116954925A (zh)

Similar Documents

Publication Publication Date Title
CN106484472B (zh) 一种内存回收方法及终端
CN104765466B (zh) 移动终端的按键控制方法及装置
CN109726076B (zh) 一种小程序生命周期管理方法和系统
CN104657258B (zh) 一种向目标进程内注入Java字节码的方法及装置
WO2017032312A1 (zh) 一种待清理数据展示方法、装置及电子设备
CN111954072B (zh) 一种多媒体播放方法、装置、多媒体播放器和介质
CN111273968A (zh) 一种对象调用方法、装置、设备及介质
CN110908837A (zh) 应用程序异常处理方法、装置、电子设备及存储介质
CN117170872A (zh) 内存管理方法、装置、设备和存储介质
CN111737166B (zh) 数据对象的处理方法、装置及设备
CN106959906A (zh) 信息处理方法、信息处理装置及电子设备
CN116954925A (zh) 内存释放方法、装置、电子设备及介质
CN108121602B (zh) 一种确定垃圾收集触发点的方法、电子设备及存储介质
CN114385368A (zh) 预写日志的刷写方法和装置
Brookes et al. The KPLT: The Kernel as a shared object
CN113687942A (zh) 检测方法、装置及电子设备
CN116680083A (zh) 内存处理方法、装置、设备和存储介质
CN116954911A (zh) 内存处理方法、装置、电子设备和可读存储介质
CN115994032A (zh) 缓存管理方法、装置、电子设备及介质
CN108897639A (zh) 文件处理方法及装置
WO2024067348A2 (zh) 内存分配器确定方法、装置、电子设备及存储介质
CN116954924A (zh) 内存管理方法、装置及电子设备
CN117271383A (zh) 内存回收管理方法、装置、电子设备及可读存储介质
CN117311967A (zh) 内存处理方法、装置及电子设备
CN116756056A (zh) 内存回收方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination