CN117130947A - 一种内存管理方法及电子设备 - Google Patents
一种内存管理方法及电子设备 Download PDFInfo
- Publication number
- CN117130947A CN117130947A CN202310096394.4A CN202310096394A CN117130947A CN 117130947 A CN117130947 A CN 117130947A CN 202310096394 A CN202310096394 A CN 202310096394A CN 117130947 A CN117130947 A CN 117130947A
- Authority
- CN
- China
- Prior art keywords
- application
- memory
- electronic device
- file
- pages
- 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.)
- Granted
Links
- 238000007726 management method Methods 0.000 title claims abstract description 54
- 238000000034 method Methods 0.000 claims abstract description 54
- 238000011084 recovery Methods 0.000 claims abstract description 9
- 230000003993 interaction Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 230000000903 blocking effect Effects 0.000 abstract description 5
- 230000000875 corresponding effect Effects 0.000 description 61
- 230000007958 sleep Effects 0.000 description 23
- 101150053844 APP1 gene Proteins 0.000 description 21
- 101100189105 Homo sapiens PABPC4 gene Proteins 0.000 description 21
- 102100039424 Polyadenylate-binding protein 4 Human genes 0.000 description 21
- 238000004891 communication Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 21
- 230000006870 function Effects 0.000 description 19
- 101100055496 Arabidopsis thaliana APP2 gene Proteins 0.000 description 15
- 101100016250 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) GYL1 gene Proteins 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 102100038359 Xaa-Pro aminopeptidase 3 Human genes 0.000 description 11
- 101710081949 Xaa-Pro aminopeptidase 3 Proteins 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000010295 mobile communication Methods 0.000 description 9
- 238000004064 recycling Methods 0.000 description 8
- 230000002650 habitual effect Effects 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000008014 freezing Effects 0.000 description 3
- 238000007710 freezing Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 206010033799 Paralysis Diseases 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- JHIVVAPYMSGYDF-UHFFFAOYSA-N cyclohexanone Chemical compound O=C1CCCCC1 JHIVVAPYMSGYDF-UHFFFAOYSA-N 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000005059 dormancy Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000005855 radiation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种内存管理方法及电子设备,涉及存储技术领域。该方法可以优先回收不活跃应用的全部文件页,从而在回收内存空间的同时保证其他活跃应用的文件页不被回收,减少由于活跃应用的文件页被回收后又需要重新读取文件导致的卡顿问题,提升用户体验。该方法应用于电子设备,电子设备中运行有一个或多个应用,电子设备包括每个处于运行状态的应用对应的内存页面链表,每个内存页面链表包括对应应用的全部文件页,方法包括:确定电子设备满足内存回收条件;回收电子设备的一个或多个内存页面链表中的第一目标内存页面链表中的全部文件页,其中,第一目标内存页面链表包括一个或多个应用中优先级最低的应用对应的内存页面链表。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种内存管理方法及电子设备。
背景技术
内存也称内存储器或主存储器,用于暂时存放中央处理器(central processingunit,CPU)的运算数据,以及与硬盘等外存储器交换的数据,是外存储器与CPU之间进行沟通的桥梁,所有程序运行都在内存中进行。由于内存容量的限制,电子设备的操作***通常设置有内存回收机制:当内存紧张时,操作***可通过回收部分已被占用的内存空间以满足新的内存分配请求。内存回收的对象主要分为匿名页(anonymous page)和文件页(file-backed page)。匿名页是没有文件背景的页面,如堆,栈,数据段等。文件页是与磁盘文件存在映射关系的内存页(有文件背景的页面),例如进程代码段、文件的映射页等。
在现有技术中,操作***的内核可以基于最近最少使用(least recently used,LRU)链表进行内存页(包括文件页和内存页)回收。但这种方法容易出现已经加载的文件被换出后又需要从磁盘中加载该文件导致的卡顿现象,既降低了应用流畅度,又影响用户的使用体验。
发明内容
本申请实施例提供一种内存管理方法及电子设备,用于解决已经加载的文件被换出后又需要从磁盘中加载该文件导致的卡顿现象。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请提供一种内存管理方法,应用于电子设备,电子设备中运行有一个或多个应用,电子设备包括每个处于运行状态的应用对应的内存页面链表,每个内存页面链表包括对应应用的全部文件页,方法包括:确定电子设备满足内存回收条件;回收电子设备的一个或多个内存页面链表中的第一目标内存页面链表中的全部文件页,其中,第一目标内存页面链表包括一个或多个应用中优先级最低的应用对应的内存页面链表。可以理解地,优先级最低的应用其活跃度最低,即将来被用户访问的概率最低,因此该应用的内存页(包括文件页和匿名页)被用户访问的概率最低。在这种情况下,将优先级最低的应用对应的文件LRU链表作为目标文件LRU链表,并回收目标文件LRU链表中的全部文件页,可以在回收内存空间的同时,保证其他活跃应用的文件页不被回收,进而减少由于活跃应用的文件页被回收后又需要重新读取文件导致的卡顿问题,提升用户体验。
在第一方面提供的一种实施方式中,每个内存页面链表还包括对应应用的全部匿名页;在确定电子设备满足内存回收条件之后,方法还包括:回收第一目标内存页面链表中的全部匿名页。如此,可以在回收内存空间的同时,可以保证其他活跃应用的匿名页不被换出,进而减少由于活跃应用的匿名页被换出后又很快被换入导致的***颠簸,提升***流畅度。
在第一方面提供的一种实施方式中,所述方法还包括:根据每个处于运行状态的应用的运行状态信息、历史运行信息以及使用顺序信息,获取对应应用的状态分数,其中,应用的运行状态信息用于指示该应用的运行状态,应用的历史运行信息包括用户对对应应用的使用习惯的数据,应用的使用顺序信息用于指示对应应用与用户交互的顺序;根据每个应用的状态分数确定对应应用的优先级。其中,该运行状态信息用于反映应用当前的运行状态,历史运行信息以及使用顺序信息可用于反映用户使用该应用的习惯,结合三者可以更为精确地反映该应用将来被用户使用的概率,进而减少内存回收过程中回收到更活跃的应用的现象发生。
在第一方面提供的一种实施方式中,所述第一目标内存页面链表还包括占用的内存大于或等于第一阈值的应用对应的内存页面链表。这样一来,电子设备可以通过牺牲用户对一个应用的体验,保证其他大部分应用的流畅度。
在第一方面提供的一种实施方式中,所述电子设备满足内存回收条件,包括:所述电子设备的可用内存空间小于第二阈值。
在第一方面提供的一种实施方式中,所述电子设备满足内存回收条件,包括:所述电子设备维持休眠状态的时间大于预设时间。
在第一方面提供的一种实施方式中,在所述回收所述电子设备的一个或多个内存页面链表中的第一目标内存页面链表中的全部文件页之后,所述方法还包括:若所述电子设备回收所释放的内存空间小于第三阈值,再次回收除所述第一目标内存页面链表以外的一个或多个内存页面链表中的第二目标内存页面链表中的全部文件页。
在第一方面提供的一种实施方式中,每个内存页面链表包括对应应用的文件最近最少使用LRU链表,文件LRU链表包括对应应用的全部文件页。
在第一方面提供的一种实施方式中,每个内存页面链表包括对应应用的匿名最近最少使用LRU链表,匿名LRU链表包括对应应用的全部匿名页。
第二方面,本申请还提供一种电子设备,电子设备包括:存储器和处理器;处理器与存储器耦合;其中,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令;当计算机指令被处理器执行时,使得电子设备执行如第一方面中任意一种实施方式的方法。
第三方面,本申请还提供一种计算机可读存储介质,包括计算机指令;
当计算机指令在电子设备上运行时,使得电子设备执行如第一方面中任意一种实施方式的方法。
第四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机可以执行上述第一方面中任一实施方式所述的推荐方法。
第五方面,提供了一种装置(例如,该装置可以是芯片***),该装置包括处理器,用于支持电子设备实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存电子设备必要的程序指令和数据。该装置是芯片***时,可以由芯片构成,也可以包含芯片和其他分立器件。
其中,第二方面至第五方面中任一种设计方式所带来的技术效果可参见第一方面中不同设计方式所带来的技术效果,此处不再赘述。
附图说明
图1为现有技术提供的一种内存页管理示意图;
图2为本申请实施例提供的一种电子设备的结构示意图;
图3为本申请实施例提供的一种电子设备的软件架构图;
图4为本申请实施例提供的一种内存管理方法的流程示意图一;
图5为本申请实施例提供的一种内存页管理示意图;
图6为电子设备进入休眠模式后的活动状态示意图;
图7为电子设备处于休眠模式期间应用的所占用的内存容量的变化趋势图;
图8为本申请实施例提供的一种内存管理方法的流程示意图二;
图9为本申请实施例提供的芯片***的结构示意图。
具体实施方式
本申请说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了下述各实施例的描述清楚简洁,首先对本申请涉及的相关技术术语或技术进行简要介绍:
ZRAM压缩技术,是Linux内核的一项功能,可提供虚拟内存压缩。
ZRAM swap,是从内存分配一块区域出来用作swap分区,如果内存空间不够了,不是把应用程序杀掉,而是把应用程序所占用的内存数据压缩后存放到该swap分区,等切换回来时可以直接把这部分数据恢复到内存中,节省重新启动应用程序所需的时间。例如,某一应用程序在普通内存中占用50MB的空间,如果压缩率是0.4,则存放在swap分区的数据只需要20MB的空间,这样swap分区可以存放更多后台临时不用的应用程序,相当于扩展了内存空间。
内存交换机制(swap机制),即将不常访问的内存空间中存储的数据先写到硬盘(即,电子设备的非易失性存储器)中,释放这部分内存空间,提供给其他更需要的进程使用。swap分区是指在硬盘上划分的swap交换区域。通过swap分区,将内存中不活跃的内存页交换到硬盘中,以达到增大内存的效果。
内存页,本申请实施例涉及页式存储管理方案,页式存储管理方案是将用户进程地址空间和内存空间按照同样大小划分为大小相等的区域,以内存页为单位进行分配,逻辑上相邻的内存页,物理上不一定相邻,由操作***硬件完成分页,对用户来说是透明的。
内存页可分为匿名页(anonymous page)和文件页(file-backed page)。匿名页是没有文件背景的页面,如堆,栈,数据段等。文件页是与磁盘文件存在映射关系的内存页(有文件背景的页面),例如进程代码段、文件的映射页等,在硬盘中具有对应的文件。
LRU(least recently used)即最近最少使用,是一种常用的内存页面置换算法,其设计原则是如果一个数据在最近一段时间没有被访问到,那么将来被访问的可能性也很小,因此,当需要进行内存回收时,选择最近最久未使用的内存页面予以淘汰,即回收这部分内存页面的内存空间。LRU链表中越靠近链表尾部的节点数据是越早访问的(即内存页面越冷),越靠近链表头部的结点数据是最近访问的(即内存页面越热),即内存页面按照由热到冷的顺序从头部向尾部依次存储。因此内存回收时,从链表的尾部开始回收。
***颠簸,即从内存换出的某一页面,根据请求又换入该页(即将该页从磁盘中读入内存),这种反复换出换入的现象即***颠簸,这将导致***需要花费大量的时间忙于进行这种频繁的页面交换,致使***的实际效率很低,严重时甚至会导致***瘫痪。
考虑到电子设备的内存是有限的,操作***的内核可基于LRU链表进行内存页回收。相关技术提供的一种内存页面回收方案为:针对每个应用维护一个匿名(anonymous,anon)LRU链表,一个anon LRU链表包括对应应用的全部匿名页;针对所有应用维护一个文件(file)LRU链表,该文件LRU链表包括所有应用的全部文件页,以及一些应用通用的文件页。
如图1所示,APP1对应匿名LRU链表1,APP2对应匿名LRU链表2,APP3对应匿名LRU链表3,……,APPn对应匿名LRU链表N。其中,匿名LRU链表1包括APP1的全部匿名页,匿名LRU链表2包括APP2的全部匿名页,匿名LRU链表3包括APP3的全部匿名页,匿名LRU链表n包括APPn的全部匿名页。另外,APP1~APPn均对应文件LRU链表,该文件LRU链表包括APP1~APPn的全部文件页,以及一些应用通用的文件页。当需要进行内存回收时,需要依次遍历各个LRU链表(包括匿名LRU链表和文件LRU链表),并从待回收的LRU链表的尾部开始进行内存回收,即可以换出可回收的文件页,或者释放可回收的文件页。
发明人在对上述的内存回收过程进行研究发现,上述的内存回收过程容易导致***颠簸和应用卡顿的现象。而且,发明人进一步研究上述的内存回收过程发现,导致***颠簸和应用卡顿的原因如下:对于将来被访问的概率不同的多个应用,在回收这些应用的内存页时,***会根据该匿名LRU链表和文件LRU链表,优先回收最近未被访问过的内存页,并在满足内存回收停止条件时停止内存回收。也就是说,内存回收是以内存页为粒度。这就可能导致活跃应用中最近未被访问的内存页被回收,不活跃应用中最近被访问的内存页没有被回收。但不活跃应用往往可能仅活跃一时,此后其内存页被再次访问的概率极低;反而由于活跃应用被用户使用的概率(也可以称为将来被访问的概率)更高,其内存页被访问的概率也更高。也就是说,活跃应用中最近未被访问的匿名页被换出后,***很可能又可能很快会再次换入该匿名页,从而导致***颠簸,降低了***效率。另外,在文件页被回收后,***需要从磁盘中读取相应的文件,而从磁盘中读取的速度远慢于从内存中读取的速度,因而容易出现卡顿,影响用户的使用体验。
例如,以APP1为应用,APP2为/>应用,/>应用将来被访问的概率高于/>应用将来被访问的概率为例,在基于LRU链表进行内存页的回收时,可能会回收 应用的冷页(即最近未被访问过的内存页),不回收或后回收/>应用的热页(即最近被访问过的内存页)。例如,用户最近使用/>应用进行了购票操作,则/>应用的购票界面的相关文件的文件页1为热页,而用户最近未刷新/>应用的朋友圈页面,则 应用朋友圈页面的相关文件的文件页2为冷页。因此在进行内存回收时,电子设备会优先回收文件页2,在满足内存回收停止条件的情况下不回收文件页1。但考虑到/>应用将来被访问的概率高于/>应用将来被访问的概率,这使得/>应用的所有内存页将来被访问的概率比/>应用的所有内存页将来被访问的概率更高,也即,/>应用中将来被访问概率更高的内存页被回收,而/>应用中将来被访问概率更低的内存页未被回收,这就会导致CPU很可能在刚刚释放了/>应用的文件页后,又需要重新从磁盘中读取相关文件,即出现***颠簸的现象,同时由于从磁盘中读取的速度较慢而使得用户开启/>应用的朋友圈页面时出现卡顿的现象。
有鉴于此,本申请提供一种内存管理方法,以应用为粒度对内存进行管理,在进行内存回收时,对相对不活跃应用的所有文件页一起进行回收,保留相对活跃应用的所有文件页,从而避免多个应用中相对较活跃的应用的文件页被回收、而相对较不活跃的应用的文件页未被回收的现象,通过牺牲较不活跃应用来保证相对较活跃的应用的文件页不会被换出,进而减少相对活跃应用的文件页被换出后又需要重新从磁盘中加载文件导致的卡顿现象,减少***颠簸现象,提高***效率。
本申请提供的内存管理方法可应用于电子设备。需要说明的是,本申请实施例所述的电子设备可以为手机、平板电脑、手持计算机、上网本、个人数字助理(personaldigital assistant,PDA)、可穿戴设备等设备,本申请对应用内存管理方法的电子设备的具体形式不做特殊限制。
图2是本申请实施例提供的一种电子设备的结构示意图。如图2所示,该电子设备可以包括:处理器210,外部存储器接口220,存储器221,通用串行总线(universal serialbus,USB)接口230,充电管理模块240,电源管理模块241,电池242,天线1,天线2,移动通信模块250,无线通信模块260,音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,传感器模块280,按键290,马达291,指示器292,摄像头293,显示屏294,以及用户标识模块(subscriber identification module,SIM)卡接口295等。
其中,处理器210可以包括一个或多个处理单元,例如:处理器210可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器210可以是电子设备的神经中枢和指挥中心。处理器210可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器210中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器210中的存储器为高速缓冲存储器。该存储器可以保存处理器210刚用过或循环使用的指令或数据。如果处理器210需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器210的等待时间,因而提高了***的效率。
在一些实施例中,处理器210可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
外部存储器接口220可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口220与处理器210通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
存储器221一般包括内部存储器221A和外部存储器221B。内部存储器221A即电子设备的内存,内部存储器221A可以为高速随机存取存储器(random-access memory,RAM)、只读存储器(read only memory,ROM)以及高速缓存(cache)等,支持随时读写而且读写速度快,用于暂时存放处理器210的运算数据,以及,与外部存储器221B交换的数据,作为处理器210与外部存储器221B之间进行沟通的桥梁。
外部存储器221B是采用非易失性存储介质的存储器,例如,至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
外部存储器221B可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像、视频播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,照片、视频等)等。
处理器210通过运行存储在外部存储器221B的指令,从而执行电子设备的各种功能应用以及数据处理。其中,内部存储器221A的读写速度高于外部存储器221B的读写速度,因此,处理器210运行存储在外部存储器221B的指令时,先将外部存储器221B中的指令加载至内部存储器221A中,这样,处理器210可以直接与内部存储器221A进行通信,提高了***运行效率。
例如,外部存储器221B中包含了可实现本申请实施例提供的内存管理方法的计算机程序,从而使得处理器210读取到该计算机程序并运行该计算机程序时,该电子设备可就被本申请实施例提供的内存管理功能。
充电管理模块240用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。充电管理模块240为电池242充电的同时,还可以通过电源管理模块241为电子设备供电。
电源管理模块241用于连接电池242,充电管理模块240与处理器210。电源管理模块241接收电池242和/或充电管理模块240的输入,为处理器210,存储器221,外部存储器,显示屏294,摄像头293,和无线通信模块260等供电。在一些实施例中,电源管理模块241和充电管理模块240也可以设置于同一个器件中。
电子设备的无线通信功能可以通过天线1,天线2,移动通信模块250,无线通信模块260,调制解调处理器以及基带处理器等实现。在一些实施例中,电子设备的天线1和移动通信模块250耦合,天线2和无线通信模块260耦合,使得电子设备可以通过无线通信技术与网络以及其他设备通信。
天线1和天线2用于发射和接收电磁波信号。电子设备中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块250可以提供应用在电子设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块250可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块250可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。
移动通信模块250还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块250的至少部分功能模块可以被设置于处理器210中。在一些实施例中,移动通信模块250的至少部分功能模块可以与处理器210的至少部分模块被设置在同一个器件中。
无线通信模块260可以提供应用在电子设备上的包括WLAN(如(wirelessfidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigationsatellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(nearfield communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
无线通信模块260可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块260经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器210。无线通信模块260还可以从处理器210接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
电子设备可以通过音频模块270,扬声器270A,受话器270B,麦克风270C,耳机接口270D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
传感器模块280可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器和骨传导传感器等传感器。电子设备可通过传感器模块280采集各种数据。
电子设备通过GPU,显示屏294,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏294和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器210可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏294用于显示图像,视频等。该显示屏294包括显示面板。
电子设备可以通过ISP,摄像头293,视频编解码器,GPU,显示屏294以及应用处理器等实现拍摄功能。ISP用于处理摄像头293反馈的数据。摄像头293用于捕获静态图像或视频。在一些实施例中,电子设备可以包括1个或N个摄像头293,N为大于1的正整数。
按键290包括开机键,音量键等。按键290可以是机械按键。也可以是触摸式按键。马达291可以产生振动提示。马达291可以用于来电振动提示,也可以用于触摸振动反馈。指示器292可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口295用于连接SIM卡。SIM卡可以通过***SIM卡接口295,或从SIM卡接口295拔出,实现和电子设备的接触和分离。电子设备可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口295可以支持Nano SIM卡,Micro SIM卡,SIM卡等。
可以理解的是,本实施例示意的结构并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
另外,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备的结构限定。在另一些实施例中,电子设备也可以包括比上述实施例提供的更多或者更少的模块,各个模块之间也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
另外,在上述部件之上,运行有操作***。例如谷歌公司所开发的Android开源操作***,华为公司所开发的鸿蒙操作***(Harmony OS),微软公司所开发的Windows操作***,苹果公司所开发的IOS操作***等。在该操作***上可以安装运行应用程序。
电子设备的操作***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android***为例,示例性说明电子设备的软件结构。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。
图3是本申请实施例的电子设备的软件结构框图,该软件结构包括应用程序层、应用程序框架层(Framework),安卓运行时(Android runtime)和***库,以及内核层(Kernel)。
应用程序层可以包括一系列应用程序包。如图3所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。例如可以包括进程管理器、电话管理器、通知管理器、应用优先级管理模块等,本申请实施例对此不做任何限制。应用程序框架层用于管理应用程序,并记录应用程序的运行状态,例如,前台、后台、冻结等状态。
其中,进程管理器用于创建、中止进程和线程。
电话管理器用于提供手机200的通信功能。例如通话状态的管理(包括接通,挂断等)。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
该应用优先级管理模块能够从应用程序框架层获取应用程序的运行状态,并根据应用程序的运行状态确定该应用程序的优先级。
***库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如,OpenGL ES),二维图形处理库(例如,SGL)等。
表面管理器用于对显示子***进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
OpenGL ES用于实现三维图形绘图,图像渲染,合成,和图层处理等。
SGL是2D绘图的绘图引擎。
安卓运行时(Android runtime)包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
内核层包括***层安全机制、内存管理、文件***、进程管理、网络堆栈及一系列驱动模块,是硬件和软件之间的层,提供与硬件的交互。
在本申请实施例中,如图3所示,内核层包括内存管理模块,该内存管理模块基于应用优先级管理模块确定的应用程序的优先级,根据内存释放机制对正在运行的各个应用所占用的内存进行管理,保证***运行时有足够的内存空间可使用。
在本申请的一个实施例中,应用程序框架层的应用优先级管理模块可以直接与内核层的内存管理模块进行交互,例如,应用优先级管理模块将每个应用程序的标识及对应的优先级标识传递至内存管理模块,这样,内存管理模块可以为每个应用创建一个匿名LRU链表和文件LRU链表,用于维护该应用程序的全部匿名页和全部文件页。
在本申请的实施例中,硬件层可以包括内部存储器和外部存储器。
下面将结合附图说明本申请提供的内存管理方法。
本申请提供一种内存管理方法,应用于如图2所示的电子设备。如图4所示,为本申请实施例提供的内存管理方法的流程示意图一,该内存管理方法包括以下步骤:
S401,电子设备获取一个或多个处于运行状态的应用的运行状态信息、历史运行信息以及使用顺序信息。
其中,处于运行状态的应用是指已经被启动且未被关闭的应用,该应用可能处于前台运行、后台运行或者可能被冻结。换言之,应用的运行状态信息可包括前台运行、后台运行或者冻结状态。
前台运行是指应用程序运行在前台模式,处于前台模式的应用程序占用电子设备的显示装置(如触摸屏)和输入装置,可以与用户进行交互。后台运行是指应用程序处于后台模式,不占用电子设备的显示装置和输入装置,不能与用户进行交互,处于后台模式的应用程序也会占用一定的***资源,如,内存资源、CPU资源。冻结状态是指某应用程序被***冻结,冻结状态的应用程序停止运行,不占用CPU资源,不释放内存资源,由于冻结状态的应用程序暂时不使用,所以可以把其占用的大部分内存页转储到ROM中,仍可以重启到之前的状态。
电子设备的操作***能够监听应用程序的运行状态,例如,Android***的应用程序框架层用于管理应用程序,因此应用程序框架层可以记录应用程序的运行状态,例如,前台、后台、冻结和运行时间等信息。
应用的历史运行信息包括应用在过去一段时间内的使用频率、习惯运行时间等能够反映用户对该应用的使用习惯的数据。
应用的使用频率可以为应用在预设时间段内从前台切换为后台的次数,或者为应用从后台切换为前台的次数。该预设时间段可以为10分钟、1小时、1天等,在此不做具体限制。例如,APP1一天内从前台切换至后台30次,则APP1的使用频率为30次/天。
应用的习惯运行时间用于指示用户在过去一段时间内习惯使用该应用的时间或时间段。例如,用户习惯在上班途中(例如早上8:30~9:00以及下午6:00~6:30期间)打开音乐APP听音乐,则音乐APP的习惯运行时间可以为早上8:30~9:00以及下午6:00~6:30。又例如,用户习惯在每周六的上午(例如上午9:00~11:00)打开运行APP应用进行运动,则该运行APP的习惯运行时间为每周六的9:00~11:00。
应用的使用顺序信息用于指示该应用在所有处于运行状态的应用中的交互顺序。在一种可选的实施方式中,电子设备可以获取所有处于运行状态的应用最后一次与用户交互的时刻,并对该时刻进行排序,便可得到每个应用的使用顺序信息。示例性的,处于运行状态的应用包括APP1~APP4。若用户曾依次使用APP1、APP3、APP4以及APP2,则APP1的使用顺序信息指示APP1的交互顺序为第一,APP2的使用顺序信息指示APP2的交互顺序为最后。
S402,电子设备根据每个应用的运行状态信息、历史运行信息以及使用顺序信息,获取对应应用的状态分数。
可以理解地,具有不同运行状态信息、历史运行信息或者使用顺序信息的应用,活跃度并不相同。应用的活跃度可表征该应用将来被用户使用的概率。其中,应用的活跃度越高,则该应用将来被用户使用的概率越高;应用的活跃度越低,则该应用将来被用户使用的概率越低。在本实施例中,以状态分数来表征应用的活跃度。
在一种可选的实施方式中,活跃度与状态分数呈正相关。这样一来,应用的状态分数越高,则该应用的活跃度越高,该应用将来被用户使用的概率越高,该应用的优先级越高;反之,应用的状态分数越低,则该应用的活跃度越低,该应用将来被用户使用的概率越低,该应用的优先级越低。
前文已经说明应用的运行状态信息、历史运行信息以及使用顺序信息均可影响该应用的活跃度。也就是说,应用的状态分数与该应用的运行状态信息、历史运行信息以及使用顺序信息均相关联。下面给出一种电子设备根据应用的运行状态信息、历史运行信息以及使用顺序信息确定应用的状态分数的示例。
在一种可选的实施方式中,电子设备可根据应用的运行状态信息得到第一分数,根据历史运行信息得到第二分数,根据应用的使用顺序信息得到第三分数,然后对第一分数、第二分数以及第三分数按照预设的权重进行加权求和,得到该应用的状态分数。
前文已经说明,前台运行的应用可以与用户进行交互,后台运行的应用以及冻结状态的应用不能与用户进行交互,且冻结状态的应用被***冻结,停止运行。由此,前台运行的应用将来被用户使用的概率高于后台运行的应用将来被用户使用的概率,后台运行的应用将来被用户使用的概率高于冻结状态的应用将来被用户使用的概率。对应的,每种运行状态对应一个分数,且前台运行对应的分数、后台运行对应的分数、冻结状态对应的分数依次降低。例如,前台运行对应的分数可以为90分,后台运行对应的分数为60分,冻结状态对应的分数为0。如此,电子设备可以将该运行状态信息所指示的运行状态对应的分数,作为第一分数。例如,运行状态信息指示应用处于前台运行,则该应用的第一分数为90分。需要说明的是,每种运行状态对应的分数也可以为其他,本实施例对此不做具体限制。
在一种可选的实施方式中,应用的第二分数与应用的使用频率以及习惯运行时间有关。例如,电子设备可以根据使用频率确定第一得分,根据习惯运行时间确定第二得分,并根据第一得分和第二得分得到该第二分数。例如,可以对第一得分和第二得分进行加权求和得到第二分数。
在本实施例中,应用的使用频率越高,则该应用将来被用户使用的概率越高;反之,应用的使用频率越低,则该应用将来被用户使用的概率越低。
在一种可选的实施方式中,电子设备可以获取所有处于运行状态的应用的使用频率,并确定使用频率最高的应用的第一得分为100分,并根据其他应用的使用频率与最高的使用频率的比值确定其他应用的第一得分。例如,APP1的使用频率为40次/天,APP2的使用频率为30次/天,APP3的使用频率为10次/天,则根据APP1、APP2以及APP3使用频率的排名,电子设备可以确定APP1的第一得分为100分,确定APP2的第一得分为30/40*100=75分,确定APP3的第一得分为10/40*100=25分。
在另一种可选的实施方式中,电子设备可以预先给使用频率划分多个区间,每个区间对应一个分数。例如,使用频率的区间划分及对应的分数可以如表1所示。
表1
使用频率 | 分数 |
50以上(不包含50) | 100 |
30~50(包含30,不包含50) | 80 |
10~30(包含10,不包含30) | 60 |
10以下(不包含10) | 40 |
以APP1的使用频率为60次/天,APP2的使用频率为30次/天,APP3的使用频率为5次/天为例,则根据表1电子设备可以确定APP1的第一得分为100分,确定APP2的第一得分为80分,确定APP3的第一得分为40分。需要说明的是,表1中的区间划分及对应的分数均为举例,其具体数值可以为其他,本实施例对其不做具体限制。
在一种可选的实施方式中,电子设备可以判断当前时刻在应用的习惯运行时间内,或者在应用的习惯运行时间之外。示例性的,以习惯运行时间为每天上午8:30~9:30为例,若当前时刻为早上8:00或者下午2:00,则当前时刻在习惯运行时间之外;若当前时刻为9:00,则当前时刻在习惯运行时间内。
可以理解地,若当前时刻在应用的习惯运行时间内,表明用户使用该应用的概率很高。若当前时刻在应用的习惯运行时间之外,表明该应用被用户使用的概率比较低(低于当前时刻在应用的习惯运行时间内时的概率),且当前时刻与当前周期内的习惯运行时间的起始时刻越接近,该应用被用户使用的概率越高。例如,习惯运行时间为每天上午8:00~9:00,则电子设备可以12.30日的9:00到12.31日的9:00为一个周期,其中12.31日的8:00即为当前周期内的习惯运行时间的起始时刻。
在一种可选的实施方式中,当前时刻在应用的习惯运行时间内、当前时刻在应用的习惯运行时间外这两种情况可分别对应不同的基础分数,且当前时刻在应用的习惯运行时间内对应的基础分数比当前时刻在应用的习惯运行时间之外对应的基础分数更高。例如,当前时刻在应用的习惯运行时间内对应的基础分数为90,当前时刻在应用的习惯运行时间之外对应的基础分数为50。
在确定基础分数后,对于当前时刻在应用的习惯运行时间之外的情况,电子设备还可以计算当前时刻与当前周期内的习惯运行时间的起始时刻的差值,并根据该差值来确定调整分数。在一种可选的实施方式中,该差值与调整分数呈负相关。也就是说,差值越小,当前时刻越接近当前周期内的习惯运行时间的起始时刻,则调整分数越高;反之,差值越大,当前时刻距离当前周期内的习惯运行时间的起始时刻越远,则调整分数越低。在一种可选的实施方式中,该调整分数可满足算式:Score=A*(1-δ1/(T-δ2)),其中,Score为调整分数,δ1为上述差值,T为周期,δ2为习惯运行时间所持续的时长,A为调整分数的最大值,例如为20、30等数值,以不超过当前时刻在应用的习惯运行时间内对应的基础分数与当前时刻在应用的习惯运行时间之外对应的基础分数的差值为准。
在当前时刻在应用的习惯运行时间之外的情况的下,电子设备将确定的基础分数加上对应的调整分数便可得到应用的第二得分。
示例性的,习惯运行时间为每天上午8:00~9:00,则假设当前时刻为晚上9:00,可以确定基础分数为50分。接着电子设备以第一天的9:30到第二天的9:30为一个周期,可以计算得到当前时刻与当前周期内的习惯运行时间的起始时刻的差值为12小时,该差值对应的调整分数可以为40*(1-12/23)=19.13。从而该应用对应的第二分数为50+19.13=69.13。
需要说明的是,上述确定第二得分的过程仅为示例。在其他实施方式中,该差值与调整分数呈正相关。在这种情况下,电子设备将确定的基础分数减去对应的调整分数便可得到应用的第二得分。
在一种可选的实施方式中,应用最后一次与用户交互的时刻距离当前时刻的时间差越小,表明该应用将来被访问的概率越高。因此,应用的使用顺序信息指示该应用的交互顺序越晚,该应用将来被访问的概率越高。从而,应用的交互顺序越靠前,其对应的第三分数越小;应用的交互顺序越靠后,其对应的第三分数越高。
S403,电子设备根据每个应用的状态分数确定对应应用的优先级。
在一种可选的实施方式中,不同的状态分数对应不同的优先级,且应用的状态分数越高,该应用的优先级越高。例如,APP1、APP2及APP3的状态分数分别为83、90、70,则可以确定APP2、APP1、APP3的优先级依次降低。
在另一个可选的实施方式中,电子设备可预设设置多个优先级,以及每个优先级对应的分数段,根据应用的状态分数所在的分数段来确定该应用的优先级。示例性的,电子设备设置A、B、C、D四个优先级,该四个优先级依次降低,且A优先级对应的分数段为80~100,B优先级对应的分数段为60~80,C优先级对应的分数段为40~60,D优先级对应的分数段为40以下。假设APP1的状态分数为95,则该应用的优先级为A优先级(即最高优先级)。
S404,在检测到可用内存空间小于第二阈值时,确定电子设备满足内存回收条件。
在一种可选的实施方式中,电子设备的内核可以检测当前可用的内存空间,如果当前可用的内存空间小于或等于第二阈值时,触发内存回收流程。该第二阈值可以根据电子设备的内存储器的总存储空间确定,当内存储器的总存储空间较大时,可以设定该第二阈值为较大的数值,保证***高效运行。
示例性的,内存储器的总空间为6GB,第二阈值可以设定为500MB;又如,内存储器的总空间为4GB,第二阈值可以设定为300MB。
在一种可能的实现方式中,内核还可以按照预设周期检测可用内存空间,该预设周期例如为1分钟、4分钟、10分钟等任意时长,在此不做具体限制。
S405,电子设备回收一个或多个文件LRU链表中的目标文件LRU链表中的全部文件页。
在本申请实施例中,针对每个处于运行状态的应用维护一个文件LRU链表,该文件LRU链表包括对应应用的全部文件页。示例性的,如图4所示,APP1对应文件LRU链表1,APP2对应文件LRU链表2,……,APPn对应文件LRU链表n。
目标文件LRU链表为待回收的文件LRU链表。在回收目标文件LRU链表中的全部文件页时,电子设备可以直接清理目标文件LRU链表对应的应用,以回收目标文件LRU链表中的全部文件页。又或者,电子设备可以压缩目标文件LRU链表中的全部文件页。
在一种可选的实施方式中,目标文件LRU链表包括优先级最低的应用对应的文件LRU链表。例如,图4所示的n个APP中,APP2的优先级最低,则电子设备可以确定文件LRU链表2为目标文件LRU链表。又例如,APP1和APPn的优先级相同且最低,则电子设备可以确定文件LRU链表1和文件LRU链表n为目标文件LRU链表。
可以理解地,优先级最低的应用其活跃度最低,即将来被用户访问的概率最低,因此该应用的内存页(包括文件页和匿名页)被用户访问的概率最低。在这种情况下,将优先级最低的应用对应的文件LRU链表作为目标文件LRU链表,并回收目标文件LRU链表中的全部文件页,可以在回收内存空间的同时,保证其他活跃应用的文件页不被回收,进而减少由于活跃应用的文件页被回收后又需要重新读取文件导致的卡顿问题,提升用户体验。
在另一种可选的实施方式中,目标文件LRU链表包括占用的内存大于或等于第一阈值的应用对应的文件LRU链表。其中,该第一阈值可以根据电子设备的内存储器的总存储空间确定,当内存储器的总存储空间较大时,可以设定该第一阈值为较大的数值。例如,内存储器的总空间为8GB,第一阈值可以为2GB。如此,当某个应用所占用的内存超过2GB时,电子设备回收该应用的所有文件页。
可以理解地,在一些情况下,单个应用占用了很大内存空间,但由于该应用可能很活跃,***并不会回收该应用的内存空间,导致内存资源紧张。在这种情况下,电子设备将占用的内存大于或等于第一阈值的应用对应的文件LRU链表确定为目标文件LRU链表,并回收该目标文件LRU链表的全部文件页,可以达到牺牲用户对一个应用的体验,保证其他大部分应用的流畅度的效果。
考虑到频繁换入换出匿名页容易导致***颠簸。在一种可选的实施方式中,针对每个处于运行状态的应用还维护一个匿名LRU链表,该匿名LRU链表包括对应应用的全部匿名页。在确定电子设备满足内存回收条件的情况下,电子设备还可以回收一个或多个匿名LRU链表中的目标匿名LRU链表中的全部匿名页。
也就是说,针对每个应用维护一个文件LRU链表以及一个匿名LRU链表,该文件LRU链表包括对应应用的全部文件页,该匿名LRU链表包括对应应用的全部匿名页。示例性的,如图5所示,APP1对应文件LRU链表1及匿名LRU链表1,APP2对应文件LRU链表2及匿名LRU链表2,APP3对应文件LRU链表3及匿名LRU链表3,APPn对应文件LRU链表n及匿名LRU链表n。
与目标文件LRU链表类似,目标匿名LRU链表为待回收的匿名LRU链表。在一种可选的实施方式中,目标匿名LRU链表包括优先级最低的应用对应的匿名LRU链表。例如,图5中APP3的优先级最低,则电子设备可以确定匿名LRU链表3为目标匿名LRU链表。在另一种可选的实施方式中,目标匿名LRU链表包括占用的内存大于或等于第一阈值的应用对应的匿名LRU链表。
可以理解地,将优先级最低的应用对应匿名LRU链表作为目标匿名LRU链表,并回收目标匿名LRU链表中的全部匿名页。如此,可以在回收内存空间的同时,可以保证其他活跃应用的匿名页不被换出,进而减少由于活跃应用的匿名页被换出后又很快被换入导致的***颠簸,提升***流畅度。
在一种可选的实施方式中,一个应用的文件LRU链表和匿名LRU链表可以合并为一个LRU链表,也可以称为内存页面链表。目标匿名LRU链表和目标文件LRU链表可以统称为目标内存页面链表。
需要说明的是,在电子设备回收了目标内存页面链表(包括目标匿名LRU链表和目标文件LRU链表)中的全部内存页(包括文件页和匿名页)后,电子设备还可以确定回收的内存空间。若回收所释放的内存空间大于或等于第三阈值,则电子设备停止回收内存流程;若回收所释放的内存空间小于第三阈值,则电子设备可以继续回收剩余处于运行状态的应用对应的内存页面链表中的目标内存页面链表的全部文件页和全部匿名页,依次类推,直至回收所释放的内存空间大于或等于第三阈值为止。
仍然如图5所示,电子设备还维护有通用文件LRU链表,该通用文件LRU链表包括各个应用通用的文件页,比如***的文件页等。电子设备可以基于LRU算法,选择最近最久未使用的文件页进行回收。
考虑到活跃应用中也可能存在一些很久未被访问的内存页,在一种可选的实施方式中,在确定电子设备满足内存回收条件的情况下,电子设备还可以回收活跃应用对应的内存页面链表中的不活跃内存页(包括文件页和匿名页)。其中,不活跃内存页可以为超过预设时间未被访问的内存页。这样可以释放活跃应用中不活跃的内存页所占用的内存空间。
特别地,电子设备从休眠模式被唤醒后更容易出现由于文件页被换出导致的应用卡顿问题。
如图6所示,如果电子设备未连接电源、处于静止状态一段时间且屏幕关闭,电子设备就会进入休眠(doze)模式(也可称为低电耗模式)。在休眠模式下,***会尝试通过降低(延缓)应用对网络的访问以及对CPU的使用来节省电池电量。***会定期退出休眠模式,以便让应用完成其推迟的活动。在每个维护时段结束后,***会再次进入休眠模式。随着时间的推移,***安排维护时段的次数越来越少,这有助于降低对电池的消耗。
可以理解地,在维护时段内,***可以进行检查网络状态(例如是否跨小区)、处理交互类信息(例如,即时通讯应用的消息、电子邮件等)等操作。在此期间,若可用内存空间小于第二阈值,为给上述操作腾出内存空间,***可以将一些内存页(包括文件页和匿名页)换出。
示例性,在电子设备进入休眠模式前,***中占用内存的进程可以如表2所示。
表2
线程 | page_size | 内存大小/MB |
总计 | 1058941 | 4136 |
HeapTaskDaemon | 87461 | 342 |
#worker | 65643 | 256 |
Android.hardwar | 28683 | 112 |
com.tencent.mm | 25813 | 101 |
android.bg | 24543 | 96 |
APM_light-weigh | 19949 | 78 |
ndroid.systemui | 17478 | 68 |
…… | …… | …… |
如表2所示,***当前所有的进程共占用了1058941个内存页,共占用4136MB内存空间;HeapTaskDaeMBon进程占用了87461个内存页,占用342MB内存空间;#worker进程占用了65643个内存页,占用256MB内存空间;Android.hardwar进程占用了28683个内存页,占用112MB内存空间,……依次类推。其中,#worker为应用的线程。
在电子设备进入休眠模式后,***中读取文件的线程可以如表3所示。
表3
线程 | 读取page次数 | 读取量/MBB |
总计 | 277748 | 1084.953 |
1512:cnss_diag | 22349 | 83.301 |
1563:DubaiStorage | 11242 | 43.914 |
2234:android.bg | 10439 | 40.777 |
27750:APMB_light-weigh | 8700 | 33.984 |
2872:ndroid.systeMBui | 7941 | 31.020 |
3827:or.phoneservice | 6928 | 27.063 |
…… | …… | …… |
根据表3可知,在电子设备进入休眠模式后,所有线程共读取内存页面27748次,共占用1084.953MB内存空间。其中,cnss_diag线程读取了22349个内存页,占用83.301MB内存空间;DubaiStorage线程读取了11242个内存页,占用43.914MB内存空间。
对比表2及表3可知,在电子设备进入休眠模式后,可申请内存读取文件。这样一来,在电子设备的可用内存空间有限时,***会将会回收内存(例如释放文件页或者将匿名页换出)。这样一来,在电子设备退出休眠模式后,若线程需要重新访问对应数据时,特别是对于文件页而言,需要从磁盘中读取文件资源,而磁盘的读取速度远低于内存的读取速度(从磁盘读取,比从内存读取,时延至少是10倍以上),会导致出现卡顿现象。示例性,以应用为例,图7示出了电子设备处于休眠模式期间/>应用的所占用的内存容量的变化趋势图。其中,横坐标为时间,0是指电子设备熄屏的时刻。可以看出,在电子设备熄屏后,/>应用的所占用的内存空间总体呈下降趋势。这就意味着/>应用所占用的内存空间被回收。以/>应用的朋友圈页面的文件页被回收为例,在电子退出休眠模式后,用户重新使用/>应用并进入/>应用的朋友圈页面,会由于需要从磁盘中读取文件导致显示朋友圈页面的过程出现卡顿。
可见,现有技术的内存管理方法容易导致电子设备休眠被唤醒后,第三方应用出现卡顿的情况。
不仅如此,现有技术的内存管理方法还会导致电子设备被唤醒时出现卡顿的情况。在电子设备退出休眠模式以后,***需要向各个处于休眠状态的***应用发送广播,该广播例如为broadcastReceiveReg广播。但在发送广播前,***需要加载大量插件,例如可以使用插件的loadAPK进行加载。在加载期间,存在大量的磁盘读写(即block I/O,主要是odex、vdex、apk等文件),这导致电子设备被唤醒后出现卡顿。
可见,电子设备从休眠模式被唤醒后,很大概率会出现应用卡顿的现象,且内存越低,这种现象越明显。
因此,在一种可选的实施方式中,在电子设备维持休眠状态的时间大于预设时间时,确定电子设备满足内存回收条件,并执行S405。如此,可以进一步避免电子设备在休眠模式期间活跃应用的文件页被回收,并使得电子设备退出休眠模式后,处于运行状态的应用热启动,且活跃应用的I/O状态同电子设备进入休眠模式之前的I/O状态一样,减轻电子设备从休眠模式后出现的卡顿现象。
针对与上述实施例提供的内存管理方法,本实施例提供一种可能的具体示例。如图8所示,该具体示例具体包括以下步骤:在电子设备亮屏(screen-on)期间,电子设备记录各个应用的运行状态信息、使用顺序信息以及历史运行信息。在电子设备灭屏的预设时间后,电子设备启动休眠模式。电子设备可以压缩不常使用的应用的内存页或者直接清理不常使用的应用,以获得空闲的内存空间供其他应用申请。在电子设备被唤醒后,处于运行状态的应用被热启动,且其I/O状态同电子设备进入休眠模式之前的状态,不存在卡顿现象。
本申请一些实施例提供了一种电子设备,该电子设备可以包括:存储器和一个或多个处理器。该存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,电子设备可执行上述方法实施例中电子设备执行的各个功能或者步骤。该电子设备的结构可以参考图2所示的电子设备的结构。
本申请实施例还提供一种芯片***(例如,片上***(system on a chip,SoC)),如图9所示,该芯片***包括至少一个处理器901和至少一个接口电路902。处理器901和接口电路902可通过线路互联。例如,接口电路902可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路902可用于向其它装置(例如处理器901或者电子设备的触摸屏)发送信号。示例性的,接口电路902可读取存储器中存储的指令,并将该指令发送给处理器901。当所述指令被处理器901执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片***还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中电子设备执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在电子设备上运行时,使得所述电子设备执行上述方法实施例中电子设备执行的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种内存管理方法,其特征在于,应用于电子设备,所述电子设备中运行有一个或多个应用,所述电子设备包括每个处于运行状态的应用对应的内存页面链表,每个所述内存页面链表包括对应应用的全部文件页,所述方法包括:
确定所述电子设备满足内存回收条件;
回收所述电子设备的一个或多个内存页面链表中的第一目标内存页面链表中的全部文件页,其中,所述第一目标内存页面链表包括所述一个或多个应用中优先级最低的应用对应的内存页面链表。
2.根据权利要求1所述的方法,其特征在于,每个所述内存页面链表还包括对应应用的全部匿名页;
在所述确定所述电子设备满足内存回收条件之后,所述方法还包括:
回收所述第一目标内存页面链表中的全部匿名页。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
根据每个处于运行状态的应用的运行状态信息、历史运行信息以及使用顺序信息,获取对应应用的状态分数,其中,应用的运行状态信息用于指示该应用的运行状态,应用的历史运行信息包括用户对对应应用的使用习惯的数据,应用的使用顺序信息用于指示对应应用与用户交互的顺序;
根据每个应用的状态分数确定对应应用的优先级。
4.根据权利要求1或2所述的方法,其特征在于,所述第一目标内存页面链表还包括占用的内存大于或等于第一阈值的应用对应的内存页面链表。
5.根据权利要求1-4中任意一项所述的方法,其特征在于,所述电子设备满足内存回收条件,包括:所述电子设备的可用内存空间小于第二阈值。
6.根据权利要求1-4中任意一项所述的方法,其特征在于,所述电子设备满足内存回收条件,包括:所述电子设备维持休眠状态的时间大于预设时间。
7.根据权利要求1-6中任意一项所述的方法,其特征在于,在所述回收所述电子设备的一个或多个内存页面链表中的第一目标内存页面链表中的全部文件页之后,所述方法还包括:
若所述电子设备回收所释放的内存空间小于第三阈值,再次回收除所述第一目标内存页面链表以外的一个或多个内存页面链表中的第二目标内存页面链表中的全部文件页。
8.根据权利要求1-7中任意一项所述的方法,其特征在于,每个所述内存页面链表包括对应应用的文件最近最少使用LRU链表,所述文件LRU链表包括对应应用的全部文件页。
9.根据权利要求8所述的方法,其特征在于,每个所述内存页面链表包括对应应用的匿名LRU链表,所述匿名LRU链表包括对应应用的全部匿名页。
10.一种电子设备,其特征在于,所述电子设备包括:存储器和处理器;所述处理器与所述存储器耦合;其中,所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令;当所述计算机指令被所述处理器执行时,使得所述电子设备执行如权利要求1-9中任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,包括计算机指令;当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-9中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310096394.4A CN117130947B (zh) | 2023-01-31 | 2023-01-31 | 一种内存管理方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310096394.4A CN117130947B (zh) | 2023-01-31 | 2023-01-31 | 一种内存管理方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117130947A true CN117130947A (zh) | 2023-11-28 |
CN117130947B CN117130947B (zh) | 2024-07-12 |
Family
ID=88855270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310096394.4A Active CN117130947B (zh) | 2023-01-31 | 2023-01-31 | 一种内存管理方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117130947B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN109857544A (zh) * | 2018-12-27 | 2019-06-07 | 努比亚技术有限公司 | 资源回收控制方法、终端及计算机可读存储介质 |
CN109992393A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 应用处理方法和装置、电子设备、计算机可读存储介质 |
CN111831441A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
WO2021083378A1 (zh) * | 2019-11-01 | 2021-05-06 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
CN113778662A (zh) * | 2021-07-28 | 2021-12-10 | 荣耀终端有限公司 | 内存回收方法及装置 |
CN114443268A (zh) * | 2020-10-31 | 2022-05-06 | 华为终端有限公司 | 内存管理方法、装置、电子设备以及计算机可读存储介质 |
-
2023
- 2023-01-31 CN CN202310096394.4A patent/CN117130947B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105701025A (zh) * | 2015-12-31 | 2016-06-22 | 华为技术有限公司 | 一种内存回收方法及装置 |
CN109992393A (zh) * | 2017-12-29 | 2019-07-09 | 广东欧珀移动通信有限公司 | 应用处理方法和装置、电子设备、计算机可读存储介质 |
CN109857544A (zh) * | 2018-12-27 | 2019-06-07 | 努比亚技术有限公司 | 资源回收控制方法、终端及计算机可读存储介质 |
WO2021083378A1 (zh) * | 2019-11-01 | 2021-05-06 | 华为技术有限公司 | 一种加速应用程序启动的方法及电子设备 |
CN111831441A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN114443268A (zh) * | 2020-10-31 | 2022-05-06 | 华为终端有限公司 | 内存管理方法、装置、电子设备以及计算机可读存储介质 |
CN114443277A (zh) * | 2020-10-31 | 2022-05-06 | 华为终端有限公司 | 内存管理方法、装置、电子设备以及计算机可读存储介质 |
CN113778662A (zh) * | 2021-07-28 | 2021-12-10 | 荣耀终端有限公司 | 内存回收方法及装置 |
Non-Patent Citations (3)
Title |
---|
NIRMESH MALVIYA ETC.: "Rethinking main memory OLTP recovery", 2014 IEEE 30TH INTERNATIONAL CONFERENCE ON DATA ENGINEERING, 19 May 2014 (2014-05-19) * |
朱洪军 等: "移动应用程序内存泄露机制分析与检测方案设计", 计算机工程与应用, 1 September 2016 (2016-09-01) * |
龚剑峰;李曦;陈香兰;朱宗卫;贾刚勇;: "一种运用块级局部性的闪存缓存管理策略", 计算机***应用, no. 07, 15 July 2013 (2013-07-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN117130947B (zh) | 2024-07-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240054079A1 (en) | Memory Management Method and Apparatus, Electronic Device, and Computer-Readable Storage Medium | |
WO2021083378A1 (zh) | 一种加速应用程序启动的方法及电子设备 | |
CN113722087B (zh) | 虚拟内存管理方法和电子设备 | |
EP3506106B1 (en) | Method for processing application, electronic device, and computer-readable storage medium | |
CN109992523B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
CN110018902B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
CN109992402B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
WO2021218370A1 (zh) | 一种内存管理方法及终端设备 | |
WO2022078105A1 (zh) | 内存管理方法、电子设备以及计算机可读存储介质 | |
WO2023202429A1 (zh) | 垃圾回收的方法及电子设备 | |
WO2019128542A1 (zh) | 应用处理方法、电子设备、计算机可读存储介质 | |
CN115757193A (zh) | 一种内存的管理方法及电子设备 | |
CN116126744B (zh) | 一种内存回收方法、装置及终端设备 | |
CN117130947B (zh) | 一种内存管理方法及电子设备 | |
CN114968546A (zh) | 一种负载处理方法及相关装置 | |
CN115858046B (zh) | 一种预加载内存页的方法、电子设备及芯片*** | |
CN114995886B (zh) | 一种存储卡的识别方法及电子设备 | |
CN113485969A (zh) | 一种存储碎片化方法及装置、终端及计算机存储介质 | |
WO2023185684A1 (zh) | 一种应用程序的进程查杀方法及电子设备 | |
CN117135730B (zh) | 一种中断处理方法及电子设备 | |
CN115981573B (zh) | 数据管理方法、电子设备及计算机可读写存储介质 | |
CN117130458B (zh) | 数据处理方法、电子设备及存储介质 | |
CN117130766B (zh) | 一种线程处理方法及电子设备 | |
CN116049113B (zh) | 文件***的整理方法、电子设备及计算机可读存储介质 | |
CN115934302A (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 | ||
GR01 | Patent grant |