CN116954911A - 内存处理方法、装置、电子设备和可读存储介质 - Google Patents

内存处理方法、装置、电子设备和可读存储介质 Download PDF

Info

Publication number
CN116954911A
CN116954911A CN202310944392.6A CN202310944392A CN116954911A CN 116954911 A CN116954911 A CN 116954911A CN 202310944392 A CN202310944392 A CN 202310944392A CN 116954911 A CN116954911 A CN 116954911A
Authority
CN
China
Prior art keywords
storage space
index information
target storage
page
swap
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
CN202310944392.6A
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 CN202310944392.6A priority Critical patent/CN116954911A/zh
Publication of CN116954911A publication Critical patent/CN116954911A/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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种内存处理方法、装置、电子设备和可读存储介质,属于信息处理领域。其中,所述方法包括:在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将空闲的预设存储空间确定为第一进程对应的目标存储空间;将第一进程对应的交换页索引信息存储至目标存储空间;在目标存储空间满足释放条件的情况下,对目标存储空间中的交换页索引信息对应的交换页执行释放操作。

Description

内存处理方法、装置、电子设备和可读存储介质
技术领域
本申请属于信息处理领域,具体涉及一种内存处理方法、装置、电子设备和可读存储介质。
背景技术
随着电子设备的快速发展,电子设备中可以安装的应用程序越来越多,多后台应用场景的概率大大增加。在电子设备的系统处于低内存状态的情况下,容易出现多个进程同时退出的情况。
由此,当电子设备的多个进程同时退出的情况下,会出现进程退出效率低的问题。
发明内容
本申请实施例的目的是提供一种内存处理方法、装置、电子设备和可读存储介质,能够解决多个进程同时退出的情况下,进程退出效率低的问题。
第一方面,本申请实施例提供了一种内存处理方法,该方法包括:
在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将空闲的预设存储空间确定为第一进程对应的目标存储空间;
将第一进程对应的交换页索引信息存储至目标存储空间;
在目标存储空间满足释放条件的情况下,对目标存储空间中的交换页索引信息对应的交换页执行释放操作。
第二方面,本申请实施例提供了一种内存处理装置,该装置包括:
确定模块,用于在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将空闲的预设存储空间确定为第一进程对应的目标存储空间;
存储模块,用于将第一进程对应的交换页索引信息存储至目标存储空间;
释放模块,用于在目标存储空间满足释放条件的情况下,对目标存储空间中的交换页索引信息对应的交换页执行释放操作。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请的实施例中,在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将空闲的预设存储空间确定为第一进程对应的目标存储空间,将第一进程对应的交换页索引信息存储至目标存储空间,在目标存储空间满足释放条件的情况下,对目标存储空间中的交换页索引信息对应的交换页执行释放操作,这样,更换第一进程对应的交换页索引信息的存储位置,避免同时释放多个进程的情况下出现的锁竞争导致等待耗时,并且,在合适的时机再释放第一进程对应的交换页,避免同时释放多个进程的情况下出现的锁竞争导致等待耗时,提高了释放进程的效率。
附图说明
图1是本申请实施例提供的一种目前的缓存释放的示意图;
图2是本申请实施例提供的一种内存处理方法的流程图;
图3是本申请实施例提供的一种预设存储空间的示意图;
图4是本申请实施例提供的一种第一进程释放缓存的流程图;
图5是本申请实施例提供的一种进程X释放缓存的流程图;
图6是本申请实施例提供的一种内存处理装置的结构图;
图7是本申请实施例提供的另一种内存处理装置的结构图;
图8是本申请实施例的电子设备的硬件结构示意图之一;
图9是本申请实施例的电子设备的硬件结构示意图之二。
具体实施方式
下面将结合本申请实施例的附图,对本申请实施例的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请实施例提供的内存处理方法至少可以应用于下述应用场景中,下面进行说明。
随着智能电子设备的快速发展,系统中可安装的应用程序与日俱增,多后台应用场景概率增加,使得系统低内存时容易触发瞬间多个后台应用同时退出的情况,导致出现CPU高负载和系统前台应用卡顿等问题,影响用户体验。
多进程同时退出会出现进程释放其占用的交换页耗时增加的情况,具体原因分析如下:
Linux中物理内存页(page)是内存管理的基本单位,每个物理内存页的大小为4KB。进程占用的物理页类型按页表项PTE是否在内存中可分为两类,其中,页表项(PageTable Entry,PTE)在内存中的物理页类型包括:匿名页、普通文件页和shmem共享文件页等;而页表项PTE不在内存中的物理页类型包括:设备私有页、迁移页和swap页等。
匿名页是指不与文件关联的内存页,可用于进程堆、栈、数据段和匿名映射等,释放时数据不会保存;普通文件页是指与文件关联的内存页,可用于进程代码段和文件读写操作等,释放时数据会保存到文件页中;shmem共享文件页是指多个进程之间共享的一块是文件页,会等到最后一个映射的进程释放时才会释放;
设备私有页是指设备有特殊用途的文件页;迁移页是指当前正在进行数据迁移的内存页;swap页可分为swapcache缓存页和swapout交换页(后文简称为交换页),其中swapcache缓存页是指在匿名页和swapout交换页之间进行相互转换过程中的临时缓存内存页;swapout交换页是指将匿名页经过zram压缩存储到内存或通过内存融合技术存储到UFS设备的页,一个进程占用的交换页中一般swapout交换页远多于swapcahce缓存页。
进程一般占用较多的物理内存页主要为匿名页、文件页和交换页。用户实际使用场景中系统低内存时触发杀死的进程一般都为后台应用。而应用切到后台后,系统会根据相关策略不断回收其占用的匿名页和文件页内存,并将回收的匿名页数据交换存储到交换页中。
所以随着时间的推移,后台应用占用的匿名页和文件页数量会不断减少,而占用的交换页数量却会不断增加,正常情况下一段时间后的后台应用占用的交换页数量会超过其占用总物理内存页的50%。
所述进程占用的匿名页和文件页对应的PTE在内存中,可以直接访问,所以释放相对较快。进程占用的交换页对应的页表项PTE不在内存中,所以释放时需要根据页表项PTE中存储的交换页索引信息来查找到该交换页在swap分区中的位置,然后才能释放,耗时相对较长。
PTE,内存分页存储机制中的构成元素,每一个表项对应一个物理页。
如图1所示,进程占用的交换页释放流程为:首先将进程占用的交换页对应的交换页索引信息缓存到第一存储空间(Per-CPU slot cache)中,当第一存储空间中缓存的交换页索引信息个数达到最大值时,在下一次缓存新的交换页索引信息到该第一存储空间时,会触发遍历该第一存储空间中缓存的所有交换页索引信息依次进行释放对应的交换页和压缩算法(如zram)压缩后的存储对象(zram obj),直到该第一存储空间中缓存的交换页索引信息全部释放完成。
其中,zram是linux的一种内存优化技术,基本工作原理是:通过划定一片区域,将压缩过后的硬盘数据放入该区域,以实现高速读取。
缓存(cache),原始意义是指访问速度比一般随机存取存储器快的一种高速存储器。
然后将需要缓存的新交换页索引信息添加到该第一存储空间中,一直重复此过程直到退出进程释放其占用的交换页结束。需要说明的是,所述同一个第一存储空间中缓存的交换页索引信息可以是不同进程的,也可以是不同swap分区的。
理论上,同一时间退出的最大进程个数等于系统支持的CPU核个数。在多进程同时退出的场景下,某一个CPU核A对应的第一存储空间缓存满后,在下一次CPU核A将释放的新交换页索引信息添加到所述CPU核A对应的第一存储空间缓存中时,会触发在所述新添加的交换页索引信息所属的进程X退出流程中进行释放所述CPU核A对应的已满第一存储空间中缓存的所有交换页索引信息对应的交换页。
若在该执行过程中发生进程调度切换到另一个CPU核B来继续执行此任务时,还是会一直持有所述CPU核A对应的第一存储空间自旋锁。
与此同时若所述CPU核A开始释放另一个进程Y占用的交换页对应的交换页索引信息到所述CPU核A对应的第一存储空间中时,因所述CPU核A对应的第一存储空间自旋锁还在被所属CPU核B或后续调度的其他CPU核N持有,其中,N最大值为系统支持的CPU核个数-1,不包括CPU核A。
此时所述CPU核A就会因访问所述CPU核A对应的第一存储空间而产生锁竞争,则需要一直等待所述CPU核A对应的第一存储空间中所有交换页索引信息对应的交换页都被释放完成并释放第一存储空间自旋锁后,所述CPU核A才可以成功访问到其对应的第一存储空间来缓存所述进程Y占用的所述新交换页索引信息。
同一时间退出的进程个数越多,在释放其占用的交换页时,发生上述第一存储空间自旋锁竞争等待耗时的概率就越大。
另外,某一个CPU核A对应的第一存储空间在释放其缓存的交换页索引信息之前,会对缓存的所有交换页索引信息按照其所属的不同swap分区进行排序,然后按照swap分区序号从小到大的顺序依次释放,目的是可以集中释放每个swap分区中的交换页索引信息对应的交换页,以尽快释放该swap分区对应的交换页信息自旋锁,避免频繁抢占同一个swap分区对应的交换页信息自旋锁而产生耗时。
但是,在多进程同时退出的场景下,存在多个第一存储空间同时释放其缓存的交换页索引信息对应的交换页的情况,这样导致多个第一存储空间按照swap分区序号从小到大的顺序进行释放时,会同时访问相同swap分区的交换页信息自旋锁而产生等待耗时。同理,同一时间退出的进程个数越多,在释放其占用的交换页时,发生上述swap分区对应的交换页信息自旋锁竞争等待耗时的概率就越大。
综上所述,多进程退出耗时主要原因是释放其占用的交换页时访问第一存储空间自旋锁和swap分区对应的交换页信息自旋锁而等待耗时导致。
针对相关技术出现的问题,本申请实施例提供一种内存处理方法、装置、电子设备及存储介质,能够解决相关技术中,进程同时退出的情况下,进程退出效率低的问题。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的内存处理方法进行详细地说明。
图2为本申请实施例提供的一种内存处理方法的流程图。
如图2所示,该内存处理方法可以包括步骤210-步骤230,该方法应用于内存处理装置,具体如下所示:
步骤210,在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将空闲的预设存储空间确定为第一进程对应的目标存储空间。
其中,预设存储空间在非内存中。第一进程可以为退出后台应用程序的进程。
其中,步骤210,具体可以包括步骤:
根据目标标识,从至少两个预设存储空间中确定空闲的预设存储空间,空闲的预设存储空间的进程标识为目标标识。
其中,目标标识可以为预设的字母、数字或者标识符。
在预设存储空间的进程标识不为目标标识的情况下,说明预设存储空间用于存储其它的指定线程的交换页索引信息,所以该预设存储空间不可用。
在预设存储空间的进程标识为目标标识的情况下,说明预设存储空间没有用于存储指定线程的交换页索引信息,所以该预设存储空间是空闲的,该预设存储空间可用。
示例性地,预设存储空间的进程标识取值为0时,表示对应的预设存储空间是空闲的。
然后,上述涉及到的将空闲的预设存储空间确定为第一进程对应的目标存储空间的步骤中,具体可以根据第一进程对应的进程标识,更新空闲的预设存储空间的进程标识,以将空闲的预设存储空间确定为第一进程对应的目标存储空间。
目标存储空间是专门用于存储第一进程对应的交换页索引信息的存储空间。
在一种可能的实施例中,预设存储空间的数量与中央处理器的核心的数量相对应,还可以还包括步骤:
获取中央处理器的核心的数量;
根据中央处理器的核心的数量,创建至少两个预设存储空间。
为同一时间可能存在的所有退出进程,分别生成一个预设存储空间,用于临时存放每个退出进程各自占用的交换页对应的交换页索引信息。
其中,中央处理器的核心的数量,指的是中央处理器内部的处理核心数量,也称作CPU的物理核心数。例如,一款CPU有4个物理核心,就意味着它内部有4个独立的处理核心,可以同时进行计算处理。
由于同一时间退出进程的最大个数等于系统支持的最大CPU的核心的数量,所以可以根据中央处理器的核心的数量,创建至少两个预设存储空间,其中,预设缓存空间的数量可以为CPU的核心的数量N,N为正整数。
步骤220,将第一进程对应的交换页索引信息存储至目标存储空间。
目标存储空间可以存储第一进程对应的交换页索引信息,目标存储空间不能再同时缓存其他进程对应的交换页索引信息。
在一种可能的实施例中,目标存储空间包括第一存储区域和第二存储区域,第一存储区域用于存储第一进程对应的进程标识,第二存储区域用于存储第一进程对应的交换页索引信息;
步骤220,具体可以包括以下步骤:
将第一进程对应的交换页索引信息存储至第二存储区域;
还可以还包括步骤:
将第一进程对应的进程标识存储至第一存储区域。
如图3所示,中央处理器的核心的数量为N,相应地,预设存储空间的数量为N,每个预设存储空间包括第一存储区域和第二存储区域,第一存储区域用于存储指定进程对应的进程标识,第二存储区域用于存储指定进程对应的交换页索引信息。
同理,目标存储空间包括第一存储区域和第二存储区域,第一存储区域用于存储第一进程对应的进程标识,第二存储区域用于存储第一进程对应的交换页索引信息。
比如,第一线程的进程标识为“2”,则将空闲的预设存储空间的进程标识更新为“2”,进程标识为“2”的目标存储空间用于标识该目标存储空间用于存储进程标识为“2”的线程的交换页索引信息。
将第一进程对应的交换页索引信息,依次添加到目标存储空间。除了第一进程以外的进程对应的交换页索引信息,无法添加至目标存储空间。
这里,可以确保目标存储空间在工作状态的同一时刻只可以缓存同一个进程对应的交换页索引信息,由此,在瞬间多进程同时退出的场景中,不会出现多个退出进程同时访问同一个目标存储空间而出现锁竞争等待耗时的情况,提升交换页的释放效率。
步骤230,在目标存储空间满足释放条件的情况下,对目标存储空间中的交换页索引信息对应的交换页执行释放操作。
在一种可能的实施例中,步骤230,具体可以包括以下步骤:
在目标存储空间中的交换页索引信息的数量大于或等于信息存储阈值的情况下,判定目标存储空间满足释放条件,对目标存储空间中的交换页索引信息对应的交换页执行释放操作;
还可以还包括步骤:
继续将第一进程对应的交换页索引信息存储至目标存储空间,并在目标存储空间中的交换页索引信息的数量大于或等于信息存储阈值的情况下,继续对目标存储空间中的交换页索引信息对应的交换页执行释放操作,直至将第一进程对应的交换页释放完成。
在目标存储空间中的交换页索引信息的数量大于或等于信息存储阈值的情况下,其中,比如交换页索引信息的数量为10,信息存储阈值为10,判定目标存储空间满足释放条件,对目标存储空间中的交换页索引信息对应的交换页执行释放操作,即对交换页索引信息为“0-10”的交换页执行释放操作;
然后,继续将第一进程对应的交换页索引信息存储至目标存储空间,并在目标存储空间中的交换页索引信息的数量大于或等于信息存储阈值的情况下,继续对目标存储空间中的交换页索引信息对应的交换页执行释放操作,即下次分别将“11-20”的交换页索引信息存储至目标存储空间,然后,在目标存储空间中的交换页索引信息的数量大于或等于信息存储阈值的情况下,将交换页索引信息为“11-20”的交换页执行释放操作,依此类推,直至将第一进程对应的交换页释放完成。
由此,可以确保将第一进程对应的交换页全部释放完成,可以解决现有的缓存机制中,当进程完全退出后可能仍有部分交换页索引信息遗留缓存在某个预设缓存空间中,导致的单个进程退出耗时统计不准确的问题。
在一种可能的实施例中,在第一进程对应的交换页释放完成的情况下,将目标存储空间的存储状态更新为空闲状态。
将目标存储空间的存储状态更新为空闲状态,具体可以包括:将目标存储空间的进程标识更新为目标标识,空闲的预设存储空间的进程标识为目标标识。
由此,在第一进程对应的交换页释放完成的情况下,将目标存储空间的存储状态更新为空闲状态,便于后续其它进程可以使用该空闲的预设存储空间。
在一种可能的实施例中,步骤230,具体可以包括以下步骤:
在目标存储空间满足释放条件的情况下,查找空闲的交换页信息自旋锁;
在查找到空闲的交换页信息自旋锁的情况下,对目标存储空间中属于空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
针对多进程同时退出场景且系统支持多个交换页分区的情况下,在预设存储空间中缓存的交换页索引信息已满并按交换页索引信息所在交换页分区的序号进行排序后。
第一进程在开始释放其对应预设存储空间中缓存的交换页索引信息对应的交换页时,首先查找空闲的交换页信息自旋锁(swapinfoM),对目标存储空间中属于空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
其中,M取值范围为:[0,系统支持的最大swap分区个数-1],并开始对目标存储空间中属于空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
在一种可能的实施例中,还可以包括以下步骤:
在未查找到空闲的交换页信息自旋锁的情况下,定时查找空闲的交换页信息自旋锁,并在查找到空闲的交换页信息自旋锁的情况下,对目标存储空间中属于空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
在未查找到空闲的交换页信息自旋锁的情况下,即在预设存储空间中缓存的所有交换页索引信息所在的所有交换页信息自旋锁都正在使用的情况下,启动定时器,定时查找空闲的交换页信息自旋锁,能够避免第一进程一直等待某个指定的交换页信息自旋锁而出现的等待耗时较长的问题,加快释放交换页索引信息对应的交换页的效率。
如图4所示,涉及对目标存储空间中属于空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作的方案,包括步骤410-步骤440,具体如下所示:
步骤410,目标存储空间满足释放条件。
步骤420,判断是否查找到空闲的交换页信息自旋锁。
在目标存储空间满足释放条件的情况下,具体可以通过检测模块,查找空闲的交换页信息自旋锁。
若是,则执行步骤430,若否,则执行步骤440。
步骤430,对目标存储空间中属于空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
在查找到空闲的交换页信息自旋锁的情况下,对目标存储空间中属于空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
步骤440,定时查找空闲的交换页信息自旋锁。
在未查找到空闲的交换页信息自旋锁的情况下,定时查找空闲的交换页信息自旋锁,并在查找到空闲的交换页信息自旋锁的情况下,对目标存储空间中属于空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
由此,针对多进程同时退出场景且系统支持多个交换页分区的情况下,可以有效降低不同退出进程释放交换页时同时访问同一个交换页信息自旋锁而竞争等待耗时的概率,提升多进程退出释放交换页的效率。
在本申请的实施例中,通过在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将空闲的预设存储空间确定为第一进程对应的目标存储空间,将第一进程对应的交换页索引信息存储至目标存储空间,在目标存储空间满足释放条件的情况下,对目标存储空间中的交换页索引信息对应的交换页执行释放操作,这样,更换第一进程对应的交换页索引信息的存储位置,避免同时释放多个进程的情况下出现的锁竞争导致等待耗时,并且,在合适的时机再释放第一进程对应的交换页,避免同时释放多个进程的情况下出现的锁竞争导致等待耗时,提高了释放进程的效率。
下面,以进程X为例对内存处理方法进行说明,如图5所示,包括:
步骤510,进程X退出开始释放其占用的交换页对应的交换页索引信息。
步骤520,从至少两个预设存储空间中确定空闲的预设存储空间,将空闲的预设存储空间确定为进程X对应的目标存储空间。
其中,目标存储空间包括第一存储区域和第二存储区域,第一存储区域用于存储第一进程对应的进程标识,第二存储区域用于存储第一进程对应的交换页索引信息。
退出进程X开始释放其占用的交换页时,首先顺序遍历所有的预设存储空间从中查找一个空闲的预设存储空间。
步骤530,将进程X对应的进程标识存储至第一存储区域,标识预设存储空间只能缓存进程X占用交换页对应的交换页索引信息。
具体可以将该目标存储空间中的进程标识填充为进程X的进程标识,也就是将进程X对应的进程标识存储至第一存储区域,用于标识该目标存储空间只能缓存进程X占用交换页对应的交换页索引信息。
步骤540,将进程X对应的交换页索引信息存储至第二存储区域。
步骤550,判断目标存储空间中的交换页索引信息的数量是否大于或等于信息存储阈值。
若是,则执行步骤560;若否,返回步骤540,即继续将进程X对应的交换页索引信息存储至第二存储区域。
步骤560,对目标存储空间中的交换页索引信息对应的交换页执行释放操作。
然后开始将进程X占用交换页对应的交换页索引信息依次添加到进程标识成员为进程X对应进程标识的预设存储空间中,当进程X对应进程标识的预设存储空间中缓存进程X占用交换页对应的交换页索引信息满时,开始触发依次释放进程X对应进程标识的预设存储空间中缓存的所有交换页索引信息对应的交换页,直到全部释放完成。
步骤570,释放交换页索引信息所在不同swap分区对应的交换页相关信息。
步骤580,释放交换页索引信息对应交换页通过zram压缩后的存储对象zram obj。
步骤590,目标存储空间中缓存的所有交换页索引信息对应的交换页结束。
步骤591,判断进程X对应的交换页是否释放完成。
若是,则执行步骤592,若否,则返回步骤540;
进程X对应进程标识的预设存储空间缓存又开始重新缓存进程X占用交换页对应的交换页索引信息,一直重复该过程,直到进程X占用的交换页全部释放完成。
步骤592,设置进程标识为目标标识,标识该预设存储空间缓存为空闲工作状态。
另外,在步骤540之后,还可以包括:
步骤541,判断进程X是否释放其占用的所有交换页结束。
若是,则执行步骤542;若否,返回步骤540;
步骤542,强制释放预设存储空间中当前缓存的所有交换页索引信息。
需要说明的是,若退出进程X占用的所有交换页全部释放完成,则不管进程X对应进程标识的预设存储空间中缓存的交换页索引信息是否已满,都会强制进行一次释放,以确保进程X占用的交换页在进程X的退出流程中全部被释放完,最后设置进程X对应进程标识的预设存储空间缓存中进程标识成员值为0,标识该预设存储空间缓存变为空闲工作状态。
本申请实施例提供的内存处理方法,执行主体可以为内存处理装置。本申请实施例中以内存处理装置执行内存处理方法为例,说明本申请实施例提供的内存处理装置。
图6是本申请实施例提供的一种内存处理装置600的结构图,该装置600包括:
确定模块610,用于在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将所述空闲的预设存储空间确定为所述第一进程对应的目标存储空间;
存储模块620,用于将所述第一进程对应的交换页索引信息存储至所述目标存储空间;
释放模块630,用于在所述目标存储空间满足释放条件的情况下,对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作。
在一种可能的实施例中,所述目标存储空间包括第一存储区域和第二存储区域,所述第一存储区域用于存储所述第一进程对应的进程标识,所述第二存储区域用于存储所述第一进程对应的交换页索引信息;存储模块620,具体用于将所述第一进程对应的交换页索引信息存储至所述第二存储区域;
存储模块620,还用于将所述第一进程对应的进程标识存储至所述第一存储区域。
在一种可能的实施例中,释放模块630,具体用于:
在所述目标存储空间中的所述交换页索引信息的数量大于或等于信息存储阈值的情况下,判定所述目标存储空间满足所述释放条件,对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作;
存储模块620,还用于继续将所述第一进程对应的交换页索引信息存储至所述目标存储空间,并在所述目标存储空间中的所述交换页索引信息的数量大于所述信息存储阈值的情况下,继续对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作,直至将所述第一进程对应的交换页释放完成。
在一种可能的实施例中,该装置600还可以包括:
更新模块,用于在所述第一进程对应的交换页释放完成的情况下,将所述目标存储空间的存储状态更新为空闲状态。
在一种可能的实施例中,预设存储空间的数量与中央处理器的核心的数量相对应,该装置600还可以包括:
获取模块,用于获取所述中央处理器的核心的数量;
创建模块,用于根据所述中央处理器的核心的数量,创建所述至少两个预设存储空间。
在一种可能的实施例中,释放模块630,具体用于:
在所述目标存储空间满足所述释放条件的情况下,查找空闲的交换页信息自旋锁;
在查找到所述空闲的交换页信息自旋锁的情况下,对所述目标存储空间中属于所述空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
在一种可能的实施例中,释放模块630,具体用于:
在未查找到所述空闲的交换页信息自旋锁的情况下,定时查找所述空闲的交换页信息自旋锁,并在查找到所述空闲的交换页信息自旋锁的情况下,对所述目标存储空间中属于所述空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
在本申请的实施例中,通过在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将空闲的预设存储空间确定为第一进程对应的目标存储空间,将第一进程对应的交换页索引信息存储至目标存储空间,在目标存储空间满足释放条件的情况下,对目标存储空间中的交换页索引信息对应的交换页执行释放操作,这样,更换第一进程对应的交换页索引信息的存储位置,避免同时释放多个进程的情况下出现的锁竞争导致等待耗时,并且,在合适的时机再释放第一进程对应的交换页,避免同时释放多个进程的情况下出现的锁竞争导致等待耗时,提高了释放进程的效率。
本申请实施例中的内存处理装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(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动作系统,还可以为其他可能的动作系统,本申请实施例不作具体限定。
本申请实施例提供的内存处理装置能够实现上述方法实施例实现的各个过程,为避免重复,这里不再赘述。
图7是本申请实施例提供的另一种内存处理装置的结构图,该内存处理装置700包括:处理器711,存储器712,存储在存储器712上并可在处理器711上运行的程序或指令,该程序或指令被处理器711执行时实现上述任一内存处理方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
可选地,如图8所示,本申请实施例还提供一种电子设备810,包括处理器811,存储器812,存储在存储器812上并可在处理器811上运行的程序或指令,该程序或指令被处理器811执行时实现上述任一内存处理方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例的电子设备包括上述的移动电子设备和非移动电子设备。
图9为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备900包括但不限于:射频单元901、网络模块902、音频输出单元903、输入单元904、传感器905、显示单元906、用户输入单元907、接口单元908、存储器909、以及处理器910等部件。
本领域技术人员可以理解,电子设备900还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器910逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图9中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器910,用于在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将所述空闲的预设存储空间确定为所述第一进程对应的目标存储空间;
存储器909,用于将所述第一进程对应的交换页索引信息存储至所述目标存储空间;
处理器910,还用于在所述目标存储空间满足释放条件的情况下,对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作。
可选地,所述目标存储空间包括第一存储区域和第二存储区域,所述第一存储区域用于存储所述第一进程对应的进程标识,所述第二存储区域用于存储所述第一进程对应的交换页索引信息;存储器909,还用于将所述第一进程对应的交换页索引信息存储至所述第二存储区域;
存储器909,还用于将所述第一进程对应的进程标识存储至所述第一存储区域。
可选地,处理器910,还用于在所述目标存储空间中的所述交换页索引信息的数量大于或等于信息存储阈值的情况下,判定所述目标存储空间满足所述释放条件,对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作;
存储器909,还用于继续将所述第一进程对应的交换页索引信息存储至所述目标存储空间,并在所述目标存储空间中的所述交换页索引信息的数量大于所述信息存储阈值的情况下,继续对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作,直至将所述第一进程对应的交换页释放完成。
可选地,处理器910,还用于在所述第一进程对应的交换页释放完成的情况下,将所述目标存储空间的存储状态更新为空闲状态。
可选地,预设存储空间的数量与中央处理器的核心的数量相对应,网络模块902,还用于获取所述中央处理器的核心的数量;
处理器910,还用于根据所述中央处理器的核心的数量,创建所述至少两个预设存储空间。
可选地,处理器910,还用于在所述目标存储空间满足所述释放条件的情况下,查找空闲的交换页信息自旋锁;
处理器910,还用于在查找到所述空闲的交换页信息自旋锁的情况下,对所述目标存储空间中属于所述空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
可选地,处理器910,还用于在未查找到所述空闲的交换页信息自旋锁的情况下,定时查找所述空闲的交换页信息自旋锁,并在查找到所述空闲的交换页信息自旋锁的情况下,对所述目标存储空间中属于所述空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
在本申请的实施例中,通过在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将空闲的预设存储空间确定为第一进程对应的目标存储空间,将第一进程对应的交换页索引信息存储至目标存储空间,在目标存储空间满足释放条件的情况下,对目标存储空间中的交换页索引信息对应的交换页执行释放操作,这样,更换第一进程对应的交换页索引信息的存储位置,避免同时释放多个进程的情况下出现的锁竞争导致等待耗时,并且,在合适的时机再释放第一进程对应的交换页,避免同时释放多个进程的情况下出现的锁竞争导致等待耗时,提高了释放进程的效率。
应理解的是,本申请实施例中,输入单元904可以包括图形处理器(GraphicsProcessing Unit,GPU)9041和麦克风9042,图形处理器9041对在视频图像捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频图像的图像数据进行处理。显示单元906可包括显示面板9061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板9061。用户输入单元907包括触控面板9071以及其他输入设备9072中的至少一种。触控面板9071,也称为触控屏触控屏。触控面板9071可包括触摸检测装置和触摸控制器两个部分。其他输入设备9072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、动作杆,在此不再赘述。存储器909可用于存储软件程序以及各种数据,包括但不限于应用程序和动作系统。处理器910可集成应用处理器和调制解调处理器,其中,应用处理器主要处理动作系统、用户页面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器910中。
存储器909可用于存储软件程序以及各种数据。存储器909可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器909可以包括易失性存储器或非易失性存储器,或者,存储器x09可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(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)。本申请实施例中的存储器909包括但不限于这些和任意其它适合类型的存储器。
处理器910可包括一个或多个处理单元;可选的,处理器910集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器910中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述内存处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述内存处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述内存处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (10)

1.一种内存处理方法,其特征在于,所述方法包括:
在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将所述空闲的预设存储空间确定为所述第一进程对应的目标存储空间;
将所述第一进程对应的交换页索引信息存储至所述目标存储空间;
在所述目标存储空间满足释放条件的情况下,对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作。
2.根据权利要求1所述的方法,其特征在于,所述目标存储空间包括第一存储区域和第二存储区域,所述第一存储区域用于存储所述第一进程对应的进程标识,所述第二存储区域用于存储所述第一进程对应的交换页索引信息;
所述将所述第一进程对应的交换页索引信息存储至所述目标存储空间,包括:
将所述第一进程对应的交换页索引信息存储至所述第二存储区域;
所述方法还包括:
将所述第一进程对应的进程标识存储至所述第一存储区域。
3.根据权利要求1所述的方法,其特征在于,所述在所述目标存储空间满足释放条件的情况下,对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作,包括:
在所述目标存储空间中的所述交换页索引信息的数量大于或等于信息存储阈值的情况下,判定所述目标存储空间满足所述释放条件,对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作;
所述方法还包括:
继续将所述第一进程对应的交换页索引信息存储至所述目标存储空间,并在所述目标存储空间中的所述交换页索引信息的数量大于所述信息存储阈值的情况下,继续对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作,直至将所述第一进程对应的交换页释放完成。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述第一进程对应的交换页释放完成的情况下,将所述目标存储空间的存储状态更新为空闲状态。
5.根据权利要求1所述的方法,其特征在于,所述预设存储空间的数量与中央处理器的核心的数量相对应;所述方法还包括:
获取所述中央处理器的核心的数量;
根据所述中央处理器的核心的数量,创建所述至少两个预设存储空间。
6.根据权利要求1所述的方法,其特征在于,所述在所述目标存储空间满足释放条件的情况下,对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作,包括:
在所述目标存储空间满足所述释放条件的情况下,查找空闲的交换页信息自旋锁;
在查找到所述空闲的交换页信息自旋锁的情况下,对所述目标存储空间中属于所述空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在未查找到所述空闲的交换页信息自旋锁的情况下,定时查找所述空闲的交换页信息自旋锁,并在查找到所述空闲的交换页信息自旋锁的情况下,对所述目标存储空间中属于所述空闲的交换页信息自旋锁的交换页索引信息所对应的交换页执行释放操作。
8.一种内存处理装置,其特征在于,所述装置包括:
确定模块,用于在释放第一进程的情况下,从至少两个预设存储空间中确定空闲的预设存储空间,将所述空闲的预设存储空间确定为所述第一进程对应的目标存储空间;
存储模块,用于将所述第一进程对应的交换页索引信息存储至所述目标存储空间;
释放模块,用于在所述目标存储空间满足释放条件的情况下,对所述目标存储空间中的所述交换页索引信息对应的交换页执行释放操作。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1~7任一项所述的方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1~7任一项所述的方法的步骤。
CN202310944392.6A 2023-07-28 2023-07-28 内存处理方法、装置、电子设备和可读存储介质 Pending CN116954911A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310944392.6A CN116954911A (zh) 2023-07-28 2023-07-28 内存处理方法、装置、电子设备和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310944392.6A CN116954911A (zh) 2023-07-28 2023-07-28 内存处理方法、装置、电子设备和可读存储介质

Publications (1)

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

Family

ID=88461614

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310944392.6A Pending CN116954911A (zh) 2023-07-28 2023-07-28 内存处理方法、装置、电子设备和可读存储介质

Country Status (1)

Country Link
CN (1) CN116954911A (zh)

Similar Documents

Publication Publication Date Title
EP3514689A1 (en) Memory management method and apparatus
CN109902255B (zh) 页面混合浏览记录生成方法、装置、设备和存储介质
US9141540B2 (en) Garbage collection of interned strings
WO2013160724A1 (en) Data processing system and method for operating a data processing system
CN112579595A (zh) 数据处理方法、装置、电子设备及可读存储介质
CN111416825A (zh) 线程间无锁日志管理方法和系统、终端、存储介质
CN109597707A (zh) 克隆卷数据拷贝方法、装置及计算机可读存储介质
CN111858393A (zh) 内存页面管理方法、内存页面管理装置、介质与电子设备
CN116954911A (zh) 内存处理方法、装置、电子设备和可读存储介质
WO2023284877A1 (zh) 检测方法、装置及电子设备
CN114489502B (zh) 一种基于并行ram的数据阵列管理方法、装置和存储设备
CN111737166B (zh) 数据对象的处理方法、装置及设备
CN115328656A (zh) 动态内存智能化扩展方法、装置、设备及存储介质
CN114996014A (zh) 基于ion分配器的内存分配方法、装置和电子设备
CN105183668B (zh) 缓存刷新方法及装置
CN111767153B (zh) 资源访问方法、装置及电子设备
CN116680083A (zh) 内存处理方法、装置、设备和存储介质
CN117271383A (zh) 内存回收管理方法、装置、电子设备及可读存储介质
CN116954925A (zh) 内存释放方法、装置、电子设备及介质
CN115994032A (zh) 缓存管理方法、装置、电子设备及介质
CN111817895B (zh) 一种主控节点切换方法、装置、设备及存储介质
CN116991605A (zh) 进程处理方法、装置、电子设备和可读存储介质
CN116954924A (zh) 内存管理方法、装置及电子设备
CN117311967A (zh) 内存处理方法、装置及电子设备
CN117149391A (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