CN116361012B - 一种内存页分配方法及电子设备 - Google Patents
一种内存页分配方法及电子设备 Download PDFInfo
- Publication number
- CN116361012B CN116361012B CN202310643065.7A CN202310643065A CN116361012B CN 116361012 B CN116361012 B CN 116361012B CN 202310643065 A CN202310643065 A CN 202310643065A CN 116361012 B CN116361012 B CN 116361012B
- Authority
- CN
- China
- Prior art keywords
- memory
- pages
- task
- attribute
- pool
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000011084 recovery Methods 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 4
- 230000000903 blocking effect Effects 0.000 abstract description 7
- 238000007726 management method Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 17
- 230000004044 response Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000004064 recycling Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 229920001621 AMOLED Polymers 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种内存分配方法及电子设备,涉及计算机领域,包括:可以判断可用空间表中当前空闲内存页数量是否充足,当可用空间表中当前空闲内存页数量不足时,可以进一步判断内存页分配任务是否为前台任务,只有前台任务分配内存页不及时用户才会感知到卡顿,若确定***的可用空间表当前空闲内存页数量不足、内存页分配任务的类型为前台任务且内存池中可以分配满足对应阶数和连续空间属性的内存页时,可以直接从内存池中为相应任务分配内存页,从而无需通过先回收内存页再分配这种方式来完成内存分配,使得用户不会感知到***卡顿,提升了用户体验感。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存页分配方法及电子设备。
背景技术
内存又称主存,是CPU能直接寻址的存储空间,在电子设备运行过程中,无论是三方应用还是***应用都需要申请内存。但由于每个电子设备受硬件条件的限制,其内存是有限的。
当电子设备在后台驻留了多个应用后,诸多应用之间总会因竞争内存空间,导致手机内存较大压力,剩余可用内存空间较小,此时电子设备再启动新的任务去申请内存空间时,就需要先回收部分内存空间再分配给前台任务对应的应用或服务使用。这种先回收再分配的方式称为“慢速路径分配”。
若通过慢速路径分配为前台任务分配过多的内存空间,则可能会增加***响应时间,使得用户感知到***卡顿,导致用户体验感较差。
发明内容
本申请提供的内存页分配方法及电子设备,解决了在若通过慢速路径分配为前台任务分配过多的内存空间,则可能会增加***响应时间,使得用户感知***卡顿,导致用户体验感较差的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,本申请提供一种内存页分配方法,该方法可以应用于电子设备,包括,
首先可以确定对应内存分配任务的类型,其中,内存分配任务可以分为前台任务和后台任务,前台任务指的是用户可以感知到的电子设备在前台运行的任务,后台任务指的是用户无法感知到的电子设备在后台运行的任务。当确定内存页分配任务的类型为前台任务,且可用空间表中当前空闲内存页数量小于第一阈值也就是空闲内存页数量不足时,可以根据内存页的阶数和标志位,从该内存池中为内存页分配任务分配与阶数和标志位对应的内存页。
在某些可能实现的方式中,还可以判断内存池的可用内存与阈值下限的大小关系,若内存池的可用内存大于或等于阈值下限时,说明内存池中的可用内存充足,则可以根据内存页的阶数和标志位,从该内存池中为内存页分配任务分配内存页。
具体的,内存页的阶数用于确定申请的内存页的页数,进而根据内存页的页数可以确定申请的内存空间大小,标志位用于指示内存页分配任务申请分配的内存页的内存空间属性,标志位可以包括内存空间的连续性属性,也就是说可以通过连续性属性确定内存页分配任务申请的内存空间是否为连续空间,若内存池可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,那么则从内存池中为内存页分配任务分配该内存页。也就是说可以确定从内存池中为内存页分配任务分配内存页成功。
在某些可能实现的方式中,可以在内存池可以设置两个子内存池,也就是说内存池可以由两个子内存池构成,分别管理movable 内存页和 unmovable 内存页。其中,movable内存页也可以叫可移动内存页,指的是可以迁移的内存页, unmovable 内存页也可以叫不可移动内存页,指的是不可以迁移的内存页,管理movable内存页的子内存池可以叫可移动内存池,管理 unmovable 内存页的内存池可以叫不可移动内存池。
在某些可能实现的方式中,内存空间属性还可以包括内存空间的可移动性属性,可移动属性是内存页的一种属性,用于表示内存页是否可进行迁移。当标志位指示的可移动性属性为可移动时,可以尝试从可移动子内存池中为内存页分配任务分配与标志位对应的连续性属性相同,且数量为对应页数的内存页,当标志位指示的可移动性属性为不可移动时,可以尝试从不可移动子内存池中为内存页分配任务分配与标志位对应的连续性属性相同,且数量为对应页数的内存页。
当可移动属性对应的内存池的可用内存小于阈值下限或无法从可移动性属性对应的内存池中为内存页分配任务分配与标志位对应的连续性属性相同,且数量为页数的内存页时,可以对可移动属性对应的内存池进行至少一次第一时间长度的填充,直至可移动属性对应的内存池的可用内存等于高位水线,也就是阈值上限,进而可以在对可移动属性对应的内存池进行填充的同时或者在对可移动属性对应的内存池进行填充之后,从填充的内存池为内存页分配任务分配内存页。这样,在第一次从预先建立的内存池中为内存页分配任务分配内存页失败之后,可以第二次尝试从填充的内存池中分配内存页。当第二次从填充的内存池中分配内存页中分配页成功,也就避免了“走慢速路径分配”也就是说不需要从先进行页面回收,再去分配内存页的可用空间表中去分配内存页,从而在第一次从预先建立的内存池中为内存页分配任务分配内存页失败之后,也可以解决现有技术中的通过“慢速路径分配”过多,可能会增加***响应时间,造成卡顿的问题。
当填充的可移动属性对应的内存池的可用内存小于内存池的阈值下限或无法从填充的可移动属性对应的内存池中为内存页分配任务分配与标志位对应的连续性属性相同,且数量为页数的内存页时,可以对可用空间表进行页面回收,从进行页面回收后的可用空间表中分配内存页。若进行页面回收后的可用空间表中,可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,那么则从进行页面回收后的可用空间表中为内存页分配任务分配该内存页。也就是说可以确定从进行页面回收后的可用空间表中为内存页分配任务分配内存页成功,否则说明分配失败。
在某些可能实现的方式中,内存页分配任务的类型可以通过以下方式确定。
可以基于cgroups机制对电子设备***中所有任务进行分组,不同cpuset代表任务属于不同的分组。
内存页分配请求可以携带对应内存页分配任务的分组标识,根据分组表示识别内存页分配任务的类型,如果分组标识表征内存页分配任务与预定的关键cpuset中task,也可以叫关键task,则该分组标识对应的内存分配任务属于前台task。其中,关键task例如可以包括即时通讯task、游戏task、图形图像显示task、***设定的其它vip task等。
在某些可能实现的方式中,当获取的分组标识表征内存页分配任务与***task,或相机task中相匹配,则获取触发该内存页分配任务对应的用户身份证明(uid,UserIdentification),根据uid识别触发该内存页分配任务的用户的身份,若该内存页分配任务对应的uid为root用户,则该内存分配任务可以为前台task,否则标记为后台task。
此外,若获取的分组标识表征内存页分配任务为其他cpuset中task,则可以对其它cpuset中task进行优先级判定,当task的优先级对应的nice值小于或等级nice阈值,可以认为该task的优先级比较高可以将该cpuset中task视为前台task否则视为后台task,nice阈值可以根据需求预先设置例如可以为-19或-20等,在此不做限定,还需要说明的是,其他cpuset中task指的是除了关键cpuset中task、***task以及相机task之外的其余Cpuset分组中的task。
第二方面,本申请提供了一种电子设备,包括:处理器和存储器;
在所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令;当所述指令被所述处理器执行时,使得所述电子设备执如第一方面中任一项所述的方法。
第三方面,本申请提供了一种计算机存储介质,包括计算机指令,当所述计算机指令在移动终端上运行时,使得所述电子设备执如第一方面中任一项所述的方法。
由上述技术方案可知,本申请具有如下有益效果:
本申请提供一种内存页分配方法及电子设备,当确定***的可用空间表中当前空闲内存页数量小于第一阈值,也就是说可用空间表中当前空闲内存页数量不足,且内存页分配任务的类型为前台任务时,可以尝试从预先建立的内存池中为内存页分配任务分配内存页,若确定当前内存池可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,那么则从内存池中为内存页分配任务分配该内存页。本申请可以首先判断***的可用空间表中当前空闲内存页数量是否充足,当可用空间表中当前空闲内存页数量不足时,可以进一步判断内存页分配任务的类型是否为前台任务,也就是说只有前台任务分配内存页不及时用户才可以感知到卡顿,若确定***的可用空间表当前空闲内存页数量不足、内存页分配任务的类型为前台任务且内存池中可以分配满足对应阶数和连续空间属性的内存页时,可以直接从内存池中为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,这样,就不需要从当前空闲内存页数量不足的可用空间表中去分配内存页,从而解决了现有技术中的通过慢速路径分配为前台任务分配过多的内存空间,则可能会增加***响应时间,使得用户感知到***卡顿,导致用户体验感较差的问题。
附图说明
图1为本申请实施例提供的一种电子设备的组成示例图;
图2A为本申请实施例提供的一种电子设备的软硬件结构示例图;
图2B为本申请实施例提供的一种内存管理服务的原理图;
图3A为本申请实施例提供的一种用户打开相机应用的示意图;
图3B为本申请实施例提供的一种相机应用界面示意图;
图4为本申请实施例提供的一种内存页分配方法的流程图;
图5为本申请实施例提供的一种内存池管理界面的示意图;
图6为本申请实施例提供的一种内存池的示意图。
具体实施方式
本申请说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍:
内存又称主存,是CPU能够直接寻址的存储空间,应用程序在运行过程中,都需要申请内存空间,以用于暂时存放运算数据。
应用在申请内存空间过程中,需要以页为单位申请内存空间,又叫内存页。
当用户通过某个应用触发对应服务时,电子设备则会执行对应的线程或者进程去完成这一服务,我们可以将该线程或者进程称之为任务task,电子设备则需要为task分配内存页。
由于每个电子设备受硬件条件的限制,其内存是有限的。当电子设备在后台驻留了多个应用后,诸多应用之间总会因竞争内存空间,导致手机内存较大压力,剩余可用内存空间较小,此时电子设备再启动新的任务去申请内存空间时,就需要先回收部分内存空间再分配给任务对应的应用或服务使用。这种先回收再分配的方式称为“慢速路径分配”。
若通过慢速路径分配为前台任务分配过多的内存空间,则可能会增加***响应时间,使得用户感知到***卡顿,导致用户体验感较差。
有鉴于此,本申请提供的内存页分配方法及电子设备,当确定***的可用空间表中当前空闲内存页数量小于第一阈值,也就是说可用空间表中当前空闲内存页数量不足,且内存页分配任务的类型为前台任务时,可以尝试从预先建立的内存池中为内存页分配任务分配内存页,若确定当前内存池可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,那么则从内存池中为内存页分配任务分配该内存页。本申请可以首先判断***的可用空间表中当前空闲内存页数量是否充足,当可用空间表中当前空闲内存页数量不足时,可以进一步判断内存页分配任务的类型是否为前台任务,也就是说只有前台任务分配内存页不及时用户才可以感知到卡顿,若确定***的可用空间表当前空闲内存页数量不足、内存页分配任务的类型为前台任务且内存池中可以分配满足对应阶数和连续空间属性的内存页时,可以直接从内存池中为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,这样,就不需要从当前空闲内存页数量不足的可用空间表中去分配内存页,从而解决了现有技术中的若通过慢速路径分配为前台任务分配过多的内存空间,则可能会增加***响应时间,使得用户感知到***卡顿,导致用户体验感较差。
在一些实施例中,电子设备可以是手机、平板电脑、桌面型、膝上型、笔记本电脑、超级移动个人计算机(Ultra-mobile Personal Computer,UMPC)、手持计算机、上网本、个人数字助理(Personal Digital Assistant,PDA)、可穿戴电子设备、智能手表等设备,本申请对上述电子设备的具体形式不做特殊限制。在本实施例中,电子设备的结构可以如图1所示,图1为本申请实施例提供的一种电子设备的结构示意图。
如图1所示,电子设备可以包括处理器110,外部存储器接口120,内部存储器121,传感器模块180,显示屏194等。其中传感器模块180可以包括触摸传感器180K等。
可以理解的是,本实施例示意的结构并不构成对电子设备的具体限定。在另一些实施例中,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110中可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了***的效率。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oled,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备的显示屏194上可以显示一系列图形用户界面(graphical userinterface,GUI),这些GUI都是该电子设备的主屏幕。一般来说,电子设备的显示屏194的尺寸是固定的,只能在该电子设备的显示屏194中显示有限的控件。控件是一种GUI元素,它是一种软件组件,包含在应用程序中,控制着该应用程序处理的所有数据以及关于这些数据的交互操作,用户可以通过直接触摸传感器180K,也称“触控器件”通过触摸操作(directmanipulation)来与控件交互,从而对应用程序的有关信息进行读取或者编辑。一般而言,控件可以包括图标、控件、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。
进一步的,触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。例如,用户通过触摸传感器180K触摸显示屏194,中的相机英勇控件,则可以通过显示屏194提供与触摸操作相关的视觉输出,也就是说显示屏194可以显示打开相机之后的界面。在另一些实施例中,触摸传感器180K也可以设置于电子设备的表面,与显示屏194所处的位置不同。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备的各种功能应用以及数据处理。
另外,在上述部件之上,运行有操作***。例如苹果公司所开发的iOS操作***,谷歌公司所开发的Android开源操作***,微软公司所开发的Windows操作***等。在该操作***上可以安装运行应用程序。
电子设备的操作***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android***为例,示例性说明电子设备的软件结构。
图2A是本申请实施例的电子设备的软硬件结构框图。
分层架构将软件,硬件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将可以将软、硬件分为四层,从上至下分别为应用层,***框架层、内核层、硬件层。
应用层可以包括一系列应用程序包。如图2A所示,应用程序包可以包括常驻服务、***应用以及三方应用等,常驻服务例如可以包括蓝牙、WiFi等,***应用可以包括相机,图库,日历,通话,地图,导航短信息等,三方应用可以包括,第三方的视频播放器、第三方的社交软件等应用程序。
***框架层为应用层的应用程序提供应用编程接口(application programminginterface,API)服务和编程框架。***框架层包括一些预先定义的函数。如图2A所示,***框架层可以包括窗口管理器,内容提供器,视图***,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
应用层和***框架层运行在虚拟机中。虚拟机将应用层和***框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
内核层是硬件和软件之间的层。内核层可以包括显示驱动,摄像头驱动,音频驱动,传感器驱动以及内存管理单元等。
内存管理单元可用于管理应用运行过程中产生的内存页以及可以为task分配对应的内存页,如图2B所示,内存管理单元中的内存页可以包括匿名页和文件页,用于存放应用运行过程中产生的中间数据(比如堆栈等)的被称为匿名页,存放于外存中的文件的被称为文件页。应用运行过程中,会不断产生匿名页,同时也会从文件***中读取新的文件页。
硬件层可以包括中央处理器(Central Processing Unit,CPU)、数字信号处理器(digital signal processor,DSP)、双倍速率同步动态随机存储器(Double Data Rate,DDR)等
CPU作为计算机***的运算和控制核心,是信息处理、程序运行的最终执行单元。
DSP用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
DDR也称内存条,是存储器的一种。
需要说明的是,本申请实施例虽然以Android***为例进行说明,但是其基本原理同样适用于基于iOS、Windows等操作***的电子设备。
***常驻服务、***应用和三方应用均通过调用***框架层提供的API接口来提供服务。***框架层的这些API服务依赖于内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。而内核也同时作为硬件和软件栈之间的抽象层。
以用户打开相机应用为例,如图3A所示,图3A示出了一种用户打开相机应用的示意图,例如,用户触摸操作为打开相机,触摸传感器180K可以接收用户对相机图标301的触摸操作,并向处理器110上报对相机图标301的触摸操作,处理器110在接收对相机图标301的触摸操作之后,可以响应于上述触摸操作,启动相机图标301对应的应用(可简称为相机应用)。
当电子设备在应用层触发启动相机应用操作时,则会调用***框架层的视图***API服务,构成相机显示界面,并在显示屏194上显示相机的拍摄预览界面。其中,相机显示界面可以由一个或多个视图组成,可以包括显示文字的视图以及显示图片的视图。如图3B所示的相机应用界面,相机应用的显示界面上可以包括模式选择控件302、相机设置控件303等各种功能控件。
当电子设备调用***框架层的视图***API服务时,则会执行对应的进程或者线程,也就是对应的task,去完成这一服务,从而需要从内核中为本次task申请内存页,以便储存task产生的数据。此时,内核需要去与DDR“打交道”,具体的内存空间大小由DDR提供。
如今,大多数用户并没有频繁清理后台应用的习惯,当电子设备在后台驻留了多个应用后,诸多应用之间总会因竞争内存空间,导致手机内存较大压力,剩余可用内存空间较小,此时电子设备再通过上述方式启动新的任务去申请内存空间时,就需要先回收部分内存空间再分配给前台任务对应的应用或服务使用。这种先回收再分配的方式称为“慢速路径分配”。
若通过慢速路径分配的为前台任务分配过多的内存空间,则可能会产生阻塞,进而会增加***响应时间,使得用户感知***卡顿,导致用户体验感较差。
为了解决上述的通过慢速路径分配的为前台任务分配过多的内存空间,则可能会产生阻塞,进而会增加***响应时间,使得用户感知***卡顿的问题。本申请提供一种内存页分配方法,以解决现有技术中的通过“慢速路径分配”过多,可能会增加***响应时间,造成卡顿的问题。
为了使本申请的技术方案更加清楚、易于理解,下面结合上述实施例及相应的附图,对本申请实施例提供的内存页分配方法进行介绍。参见图4所示的一种内存页分配方法的流程图。下面以电子设备为该方法的执行主体进行介绍,如图4所示,该内存页分配方法可以包括但不限于如下内容:
S41:响应于触发内存页分配请求,确定***中可用空间表中当前空闲内存页数量是否小于第一阈值。
当用户对电子设备中的内存使用对象执行需要申请内存的操作时,内存使用对象可以响应于用户操作,触发内存页分配请求,然后电子设备响应于触发内存页分配请求,执行与需要申请内存的操作对应的内存页分配任务,进而可以为内存页分配任务分配所需的内存页。其中,内存使用对象可以理解为电子设备中的应用程序或者***出厂自带的一些服务,例如,蓝牙,WiFi等,内存页分配任务可以为内存使用对象的与申请内存操作对应的线程或者进程。需要说明的是,在内存使用对象的运行过程中,需要以申请内存页的方式去申请内存空间,以对产生的数据进行储存。
例如,用户触发连接蓝牙的操作,蓝牙应用可以响应于用户操作,触发内存页分配请求,然后电子设备响应于触发内存页分配请求,执行蓝牙task,进而电子设备可以为蓝牙task申请分配内存页。再例如,用户通过应用A与其他用户聊天,此时应用A可以触发内存页分配请求,进而电子设备可以执行应用A对应的通讯task,进而电子设备可以为通讯task申请分配内存页。
进一步的,当电子设备需要为内存分配任务分配内存页时,电子设备需要先确定是否从***的可用空间表中申请分配内存页,其中,可用空间表是通过把空闲内存划分成固定大小的数据块,而且利用指针字段把这些数据块链接起来,并使用一个指针指向首结点,形成的一个单链表。
具体的,电子设备可以获取可用空间表中当前空闲内存页数量,判断当前空闲内存页数量是否小于第一阈值,若确定当前空闲内存页数量小于第一阈值,说明可用空间表中当前空闲内存页数量不足,则执行步骤S42,若确定当前空闲内存页数量大于第一阈值,说明可用空间表中当前空闲内存页数量充足,则执行步骤S43,需要说明的是,第一阈值可以根据需求预先设置,比如内存8GB的电子设备可以设定第一阈值为160MB,内存16GB的电子设备可以设定第一阈值为300MB,当然这里只是举例说明,并不做具体限定,本领域技术人员也可以根据实际需求设置第一阈值的具体数值。
S42:确定对应内存页分配任务的类型。
电子设备在确定当前空闲内存页数量小于第一阈值之后,可以确定对应内存分配任务的类型,其中,内存分配任务可以分为前台任务和后台任务,前台任务指的是用户可以感知到的电子设备在前台运行的任务,后台任务指的是用户无法感知到的电子设备在后台运行的任务。
需要说明的是,由于前台任务是用户可以感知到的任务,所以当前台任务无法及时分配到内存页处理数据时,用户可以感知到电子设备的卡顿,导致给用户带来比较差的体验感,由于后台任务是用户无法感知到的任务,所以当后台任务无法及时分配到内存页处理数据时,用户无法直观感知,所以对用户的体验感影响较小,因此在确定当前空闲内存页数量小于第一阈值之后,还需要确定对应内存页分配任务的类型。
进一步的,若确定内存页分配任务的类型为前台任务,在确定当前空闲内存页数量小于第一阈值,也就是说可用空间表中当前空闲内存页数量不足的前提下,如执行S43从***的可用空间表中为内存页分配任务分配内存页的步骤,则可能无法及时为此次执行的前台任务分配到内存页处理数据时,使得用户可以感知到电子设备的卡顿,体验感较差,因此,当确定当前空闲内存页数量小于第一阈值且确定内存页分配任务的类型为前台任务时,需要执行步骤S44从预先建立的内存池中为内存页分配任务分配内存页的步骤。
若确定内存页分配任务的类型为后台任务,由于后台任务是用户无法感知到的任务,当后台任务无法及时分配到内存页处理数据时,对用户的体验感影响较小,因此执行步骤S43。
具体的,内存页分配任务的类型可以通过以下方式确定。
可以基于cgroups机制对电子设备***中所有任务进行分组,不同cpuset代表任务属于不同的分组。
在某些可能实现的方式中,内存页分配请求可以携带对应内存页分配任务的分组标识,根据分组表示识别内存页分配任务的类型,如果分组标识表征内存页分配任务与预定的关键cpuset中task,也可以叫关键task,相匹配,则该分组标识对应的内存分配任务属于前台task。其中,关键task例如可以包括即时通讯task、游戏task、图形图像显示task、***设定的其它vip task等。需要说明的是,内存页分配任务的分组标识也可以通过其他方式获取,并不一定是内存页分配请求中携带,本领域技术人员可以根据需求实际设置,例如直接***中获取分组标识等,此外,预先设定的task可以根据需求设置,在此不做限定。
在某些可能实现的方式中,当获取的分组标识表征内存页分配任务与***task,或相机task中相匹配,则获取触发该内存页分配任务对应的用户身份证明(uid,UserIdentification),根据uid识别触发该内存页分配任务的用户的身份,若该内存页分配任务对应的uid为root用户,则该内存分配任务可以为前台task,否则标记为后台task。
此外,若获取的分组标识表征内存页分配任务为其他cpuset中task,则可以对其它cpuset中task进行优先级判定,当task的优先级对应的nice值小于或等级nice阈值,可以认为该task的优先级比较高可以将该cpuset中task视为前台task否则视为后台task,nice阈值可以根据需求预先设置例如可以为-19或-20等,在此不做限定,还需要说明的是,其他cpuset中task指的是除了关键cpuset中task、***task以及相机task之外的其余Cpuset分组中的task。
S43:从***的可用空间表中为内存页分配任务分配内存页。
若可用空间表中可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,那么则从可用空间表中为内存页分配任务分配该内存页。也就是说可以确定从可用空间表中为内存页分配任务分配内存页成功,否则说明分配失败。
S44:从预先建立的内存池中为内存页分配任务分配内存页。内存池是使用池进行内存管理,允许动态分配固定大小的内存块。在本申请实施例中可以预先建立一个内存池。并为该内存池设置内存空间的大小值,也可以预先为该内存池设置一个低位水线,也可以叫阈值下限,需要说明的是,本领域技术人员可以根据需求设置内存空间的大小值和阈值下限的值,这里不做限定。
在某些可能实现的方式中,电子设备的内存池可以默认为关闭状态,电子设备中可以配置有内存池管理界面,在该内存池管理界面中可以配置有内存池对应的开关,若用户通过电子设备感知从可用空间表中为内存页分配任务分配内存页产生卡顿,那么可以将该开关配置到处于开启的状态,则电子设备响应于用户操作,确定用户触发了开启内存池的操作,进而电子设备会开启内存池,并从操作***中申请内存页面存入内存池。若用户将该开关配置到处于关闭的状态,则电子设备可以关闭内存池,并释放内存池中还未分配的内存页面。
如图5 所示,在图5所示的内存池管理界面50中配置有开关51,在该内存池管理界面50中还可以配置有输入控件52,在该输入控件52中用户可以根据需求输入所建立的内存池的内存大小。例如,若用户输入的数字为100MB,则内存池在启动后可以向操作***申请总共100MB的内存页面。并且在内存池已经建立后,用户也可以通过该输入控件52来对内存池的大小进行改变。
在某些可能实现的方式中,在内存池内存空间的大小已经确定的情况下,若检测到输入控件52中所输入有数值时,可以将所输入的数值与已经建立的内存池的大小进行比对,若输入的数值大于已经建立的内存池的大小,则可以根据输入的数值与已经建立的内存池的大小的差值,进一步向操作***的内核申请内存页,以补齐该差值。
若输入的数值小于已经建立的内存池的大小,则可以根据输入的数值与已经建立的内存池的大小的差值,对内存池中的内存页面进行释放,以使得释放内存页面后的内存池的大小与输入的数值相同。
在某些可能实现的方式中,当确定内存页分配任务的类型为前台任务,且可用空间表中当前空闲内存页数量小于第一阈值时,可以开启内存池,并获取内存页分配任务申请的内存页的阶数和标志位,根据内存页的阶数和标志位,尝试从该内存池中为内存页分配任务分配内存页,需要说明的是内存池也可以在电子设备开机的时候自动开启。
其中,内存页的阶数用于确定申请的内存页的页数,进而根据内存页的页数可以确定申请的内存空间大小,标志位用于指示内存页分配任务申请分配的内存页的内存空间属性,标志位可以包括内存空间的连续性属性,也就是说可以通过连续性属性确定内存页分配任务申请的内存空间是否为连续空间,若内存池可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,那么则从内存池中为内存页分配任务分配该内存页。也就是说可以确定从内存池中为内存页分配任务分配内存页成功,否则说明分配失败执行步骤S43。例如,本次内存页分配任务,申请阶数为2的内存页且标志位中指定ALLOC_NOFRAGMENT,则代表此次申请内存页数量为22,每个内存页大小为4KB,总共申请16KB的内存空间,且要求这些内存空间是连续的。若当前内存池无法满足分配条件,比如说,当前内存池只可以分配阶数为1阶的内存空间连续的内存页,或者说,内存池只可以分配阶数为2阶但内存空间不连续的内存页,则从内存池中分配内存页失败。
在某些可能实现的方式中,还可以判断内存池的可用内存与阈值下限的大小关系,若内存池的可用内存小于阈值下限时,说明内存池中的可用内存不足,则无法从内存池中为内存页分配任务分配内存页,说明分配失败执行步骤S43。若内存池的可用内存大于或等于阈值下限时,说明内存池中的可用内存充足,则可以继续判断内存池是否可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页。
若内存池的可用内存大于或等于阈值下限且内存池可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页。电子设备才可以从内存池中为内存页分配任务分配对应的内存页。也就是说只有满足这些条件时,电子设备才可以成功的从内存池中为内存页分配任务分配对应的内存页。
在某些可能实现的方式中,可以在内存池可以设置两个子内存池,也就是说内存池可以由两个子内存池构成,分别管理movable 内存页和 unmovable 内存页。其中,movable 内存页也可以叫可移动内存页,指的是可以迁移的内存页, unmovable 内存页也可以叫不可移动内存页,指的是不可以迁移的内存页,管理movable 内存页的子内存池可以叫可移动内存池,管理 unmovable 内存页的内存池可以叫不可移动内存池。可移动内存池和不可移动内存池均独立维护,可以预先为每个子内存池设置内存空间的大小值,也可以预先为每个子内存池设置一个低位水线,也可以叫阈值下限。
进一步的,内存空间属性还可以包括内存空间的可移动性属性,可移动属性是内存页的一种属性,用于表示内存页是否可进行迁移。当标志位指示的可移动性属性为可移动时,可以尝试从可移动子内存池中为内存页分配任务分配与标志位对应的连续性属性相同,且数量为对应页数的内存页,当标志位指示的可移动性属性为不可移动时,可以尝试从不可移动子内存池中为内存页分配任务分配与标志位对应的连续性属性相同,且数量为对应页数的内存页。
若对应子内存池中可以为内存页分配任务分配与标志位对应的连续空间属性相同,可移动属性相同,且数量为对应页数的内存页,那么则从对应子内存池中为内存页分配任务分配该内存页。也就是说可以确定从该子内存池中为内存页分配任务分配内存页成功,否则说明分配失败执行步骤S43。
在某些可能实现的方式中,在内存池中可以通过链表的形式对内存页进行存储。并且内存池中可以包括有多个链表,如图6所示,可移动内存池中可以有链表A1、链表A2,不可移动内存池中可以有链表A3以及链表A4。其中,链表A1和链表A2,由于在可移动内存池中,所以其储存的内存页为可移动的内存页,由于链表A3和链表A4在不可移动内存池中,所以对应储存的内存页为不可移动的内存页面。当标志位指示的可移动性属性为可移动时,那么则链表A1和A2中哪个可以为内存页分配任务分配与标志位对应的连续性属性相同,且数量为对应页数的内存页,就从对应链表中分配该内存页。当标志位指示的可移动性属性为不可移动时,那么则链表A3和A4中哪个可以为内存页分配任务分配与标志位对应的连续性属性相同,且数量为对应页数的内存页,就从对应链表中分配该内存页。
本申请提供的实施例中,当确定***的可用空间表中当前空闲内存页数量小于第一阈值,也就是说可用空间表中当前空闲内存页数量不足,且内存页分配任务的类型为前台任务时,可以尝试从预先建立的内存池中为内存页分配任务分配内存页,若确定当前内存池可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,那么则从内存池中为内存页分配任务分配该内存页。本申请可以首先判断***的可用空间表中当前空闲内存页数量是否充足,当可用空间表中当前空闲内存页数量不足时,可以进一步判断内存页分配任务的类型是否为前台任务,也就是说只有前台任务分配内存页不及时用户才可以感知到卡顿,若确定***的可用空间表当前空闲内存页数量不足、内存页分配任务的类型为前台任务且内存池中可以分配满足对应阶数和连续空间属性的内存页时,可以直接从内存池中为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,这样,就不需要从当前空闲内存页数量不足的可用空间表中去分配内存页,从而解决了现有技术中的通过“慢速路径分配”过多,可能会增加***响应时间,造成用户感知***产生卡顿,导致用户体验感差问题。
当电子设备从内存池中为内存页分配任务分配内存页失败之后,为了再次尝试从内存池中为内存页分配任务分配内存页,可以执行S45的步骤,启动填充线程以向内存池填充内存页的方式对内存池的内存空间进行填充。
下面以内存池中包括可移动内存池和不可移动内存池为例介绍。
S45:对可移动属性对应的内存池进行至填充。
电子设备可以在执行S44失败,也就是第一次从预先建立的内存池中为内存页分配任务分配内存页失败之后,对可移动属性对应的内存池进行至填充。
具体的,在本申请实施例中,电子设备可以通过在释放内存页的过程中进行拦截的方式来填充可移动属性对应的内存池,也就是说,当某一个子内存池需要填充时,电子设备可以将***释放的本该归还至可用空间表的内存页进行拦截,将这些内存页按照填充至对应的子内存池,例如,以可移动内存池为例,若确定电子设备需要从可移动内存池中为内存页分配任务分配内存页,并且可移动内存池的可用内存小于阈值下限或可移动内存池无法为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页时,则可以对可移动内存池进行至填充。
在某些可能实现的方式中,还可以预先为每个子内存池分别设置一个高位水线,高位水线也可以叫阈值上线,用户表示内存池内存空间大小的上限,当对某一个子内存池进行填充的时候,可以对该内存池进行至少一次第一时间长度的填充,也就是说,可以每隔第一时间长度,对该内存池进行一次填充,直至可移动属性对应的内存池的可用内存等于阈值上限的时候停止填充。当然这里的第一时间长度可以根据实际需求设置,也可以每隔其他时间长度对对应内存池进行一次填充,这里不做限定。需要说明的是,每个子内存池所管理的内存空间是动态变化的,因此每个子内存池可以通过两条水线——高位水线和低位水线来对内存池的内存空间大小进行控制,使得内存池的可用空间大小在低位水线和高位水线之间波动,并且这两条水线可以预先设定,在***运行过程中也可通过修改配置文件的方式进行修改。
S46:从填充的可移动属性对应的内存池中为所述内存页分配任务分配内存页。
电子设备可以在对可移动属性对应的内存池进行填充的同时或者在对可移动属性对应的内存池进行填充之后,从中为内存页分配任务分配内存页。
具体的,以在对可移动属性对应的内存池进行填充的同时,从对应填充的内存池中为内存页分配任务分配内存页,为例介绍。
当电子设备执行S43步骤失败之后,也就是说第一次从内存池中为内存页分配任务分配内存页失败且第一次从***的可用空间表中为内存页分配任务分配内存页也失败,此时,电子设备可以尝试从填充的可移动属性对应的内存池中为内存页分配任务分配内存页,就是第二次尝试从填充的内存池中分配内存页。
进一步的,电子设备需要判断是否能够成功从填充的可移动属性对应的内存池中为内存页分配任务分配内存页。当可移动属性对应的内存池的可用内存被填充至大于或等于阈值下限,且填充的可移动属性对应的内存池中可以为内存页分配任务分配与标志位对应的连续性属相同,且数量为页数的内存页时,电子设备才可以成功的从填充的内存池中为内存页分配任务分配对应的内存页。
若填充的可移动属性对应的内存池的可用内存仍然小于阈值下限或填充的可移动属
性对应的内存池中无法为内存页分配任务分配与标志位对应的连续性属性相同,且数量为页数的内存页时,则说明电子设备第二次尝试从填充的内存池中为内存页分配任务分配内存页失败,则执行S47步骤。
S47:对可用空间表进行页面回收,从进行页面回收后的可用空间表中分配内存页。
电子设备在第二次尝试从填充的内存池中为内存页分配任务分配内存页失败之后,可以再次尝试从可用空间表中分配内存页。由于第一次尝试从可用空间表中分配内存页失败,所以需要对可用空间表进行页面回收,然后再从进行页面回收后的可用空间表中分配内存页。
在某些可能实现的方式中,进行页面回收可以为并行执行第一内存回收方式以及第二内存回收方式,其中,第一内存回收方式可以为回收应用程序的内存页,第二内存回收方式可以为回收电子设备的驱动的内存页。需要说明的是,第一内存回收方式和第二内存回收方式,各自所回收的对象不同,进而并行的通过第一内存回收方式以及第二内存回收方式进行内存也的回收,可以提升内存回收的效率。
若进行页面回收后的可用空间表中,可以为内存页分配任务分配与标志位对应的连续空间属性相同,且数量为对应页数的内存页,那么则从进行页面回收后的可用空间表中为内存页分配任务分配该内存页。也就是说可以确定从进行页面回收后的可用空间表中为内存页分配任务分配内存页成功,否则说明分配失败。
本申请提供的实施例中,电子设备可以在第一次从预先建立的内存池中为内存页分配任务分配内存页失败之后,可以对可移动属性对应的内存池进行至填充,当第一次从***的可用空间表中为内存页分配任务分配内存页也失败时,可以尝试从填充的可移动属性对应的内存池中为内存页分配任务分配内存页,也就是第二次尝试从填充的内存池中分配内存页。当可移动属性对应的内存池的可用内存被填充至大于或等于阈值下限,且填充的可移动属性对应的内存池中可以为内存页分配任务分配与标志位对应的连续性属性相同,且数量为页数的内存页时,电子设备可以成功的从填充的内存池中为内存页分配任务分配对应的内存页。这样,就避免了“走慢速路径分配”也就是说不需要从先进行页面回收,再去分配内存页的可用空间表中去分配内存页,从而在第一次从预先建立的内存池中为内存页分配任务分配内存页失败之后,也可以解决现有技术中的通过“慢速路径分配”内存空间过多,可能会增加***响应时间,造成用户感知***产生卡顿,导致用户体验感差问题。
本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (11)
1.一种内存页分配方法,应用于电子设备,其特征在于,包括:
确定内存页分配任务的类型,所述类型包括前台任务和后台任务,所述前台任务的内存页分配优先级高于所述后台任务的内存页分配优先级;
当确定所述内存页分配任务的类型为前台任务,且可用空间表中当前空闲内存页数量小于第一阈值时,根据所述内存页分配任务申请的内存页的阶数和标志位,从预先建立的内存池中为所述内存页分配任务分配内存页,所述标志位用于指示所述内存页分配任务申请分配的内存页的内存空间属性;
所述根据所述内存页分配任务申请的内存页的阶数和标志位,从预先建立的内存池中为所述内存页分配任务分配内存页,包括:
当所述内存池的可用内存小于阈值下限时,对所述内存池进行至少一次第一时间长度的填充,当内存池的可用内存被填充至大于或等于所述阈值下限后,根据所述内存页分配任务申请的内存页的阶数和标志位,从填充的内存池中为所述内存页分配任务分配内存页,所述填充的方式为对***释放的内存页进行拦截,将拦截的所述内存页填充至所述内存池。
2.根据权利要求1所述的方法,其特征在于,所述根据所述内存页分配任务申请的内存页的阶数和标志位,从预先建立的内存池中为所述内存页分配任务分配内存页,包括:
当内存池的可用内存大于或等于阈值下限时,根据所述阶数和所述标志位,从所述内存池中为所述内存页分配任务分配内存页。
3.根据权利要求2中所述的方法,其特征在于,所述内存空间属性包括内存空间的连续性属性,所述根据所述阶数和所述标志位,从所述内存池中为所述内存页分配任务分配内存页,包括:
根据所述阶数确定所述内存页分配任务申请分配的内存页的页数;
从所述内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页。
4.根据权利要求3所述的方法,其特征在于,所述内存空间属性还包括内存空间的可移动性属性,所述从所述内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页,包括:
从所述可移动性属性对应的内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页。
5.根据权利要求4所述的方法,其特征在于,所述内存池包括可移动子内存池和不可移动子内存池,从所述可移动性属性对应的内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页,包括:
当所述标志位指示的可移动性属性为可移动时,从所述可移动子内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页;
当所述标志位指示的可移动性属性为不可移动时,从所述不可移动子内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页。
6.根据权利要求5所述的方法,其特征在于,所述从所述可移动性属性对应的内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页,包括:
当可移动属性对应的内存池的可用内存小于阈值下限或无法从所述可移动性属性对应的内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页时,对可移动属性对应的内存池进行至少一次第一时间长度的填充,直至可移动属性对应的内存池的可用内存等于阈值上限;
当可移动属性对应的内存池的可用内存被填充至大于或等于所述阈值下限后,从填充的可移动属性对应的内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当填充的可移动属性对应的内存池的可用内存小于内存池的阈值下限或无法从填充的可移动属性对应的内存池中为所述内存页分配任务分配与所述标志位对应的连续性属性相同,且数量为所述页数的内存页时,对可用空间表进行页面回收;
从进行页面回收后的可用空间表中分配所述内存页。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述确定内存页分配任务的类型,包括:
将分组标识为关键任务标识的所述内存页分配任务确定为所述前台任务;
将用户标识为root用户的所述内存页分配任务确定为所述前台任务;
将任务优先级对应的nice值大于预设nice值的所述内存页分配任务确定为所述前台任务。
9.根据权利要求8所述的方法,其特征在于,分组标识为关键任务标识的内存页分配任务包括:即时通讯任务、游戏任务、图形图像显示任务以及预先设定的会员任务。
10.一种电子设备,其特征在于,包括:处理器和存储器;
其中,在所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令;当所述指令被所述处理器执行时,使得所述电子设备执如权利要求1-9任一项所述的方法。
11.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,所述电子设备执行如权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310643065.7A CN116361012B (zh) | 2023-06-01 | 2023-06-01 | 一种内存页分配方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310643065.7A CN116361012B (zh) | 2023-06-01 | 2023-06-01 | 一种内存页分配方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116361012A CN116361012A (zh) | 2023-06-30 |
CN116361012B true CN116361012B (zh) | 2023-10-24 |
Family
ID=86924012
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310643065.7A Active CN116361012B (zh) | 2023-06-01 | 2023-06-01 | 一种内存页分配方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116361012B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445835A (zh) * | 2015-08-10 | 2017-02-22 | 北京忆恒创源科技有限公司 | 内存分配方法与装置 |
CN111831435A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN114564315A (zh) * | 2022-03-15 | 2022-05-31 | 维沃移动通信有限公司 | 内存分配方法、装置、电子设备及介质 |
CN115098270A (zh) * | 2022-07-29 | 2022-09-23 | 苏州浪潮智能科技有限公司 | 一种内存空间分配方法、***、装置及可读存储介质 |
CN115269190A (zh) * | 2022-07-29 | 2022-11-01 | 北京字跳网络技术有限公司 | 内存分配方法、装置、电子设备、存储介质及产品 |
CN115794361A (zh) * | 2021-09-10 | 2023-03-14 | 华为技术有限公司 | 管理内存的方法和电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220070110A1 (en) * | 2020-08-25 | 2022-03-03 | Bank Of America Corporation | System for adjusting resource allocation based on user selection |
-
2023
- 2023-06-01 CN CN202310643065.7A patent/CN116361012B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445835A (zh) * | 2015-08-10 | 2017-02-22 | 北京忆恒创源科技有限公司 | 内存分配方法与装置 |
CN111831435A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN115794361A (zh) * | 2021-09-10 | 2023-03-14 | 华为技术有限公司 | 管理内存的方法和电子设备 |
CN114564315A (zh) * | 2022-03-15 | 2022-05-31 | 维沃移动通信有限公司 | 内存分配方法、装置、电子设备及介质 |
CN115098270A (zh) * | 2022-07-29 | 2022-09-23 | 苏州浪潮智能科技有限公司 | 一种内存空间分配方法、***、装置及可读存储介质 |
CN115269190A (zh) * | 2022-07-29 | 2022-11-01 | 北京字跳网络技术有限公司 | 内存分配方法、装置、电子设备、存储介质及产品 |
Also Published As
Publication number | Publication date |
---|---|
CN116361012A (zh) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102000266B1 (ko) | 애플리케이션 인스턴스들에 걸친 식별자들 | |
US8176294B2 (en) | Reducing storage expansion of a virtual machine operating system | |
US8949295B2 (en) | Cooperative memory resource management via application-level balloon | |
US9268678B2 (en) | Memory defragmentation in a hosted hypervisor | |
CN109669877B (zh) | 内存管理方法、装置、终端及存储介质 | |
CN114020652B (zh) | 一种应用程序的管理方法及电子设备 | |
US9880861B2 (en) | Method and apparatus for page view switching | |
US11341044B2 (en) | Reclaiming storage resources | |
JP2021099879A (ja) | 開発マシン操作タスクの処理方法、電子機器、コンピュータ可読記憶媒体及びコンピュータプログラム | |
CN105404547A (zh) | 一种操作***的融合方法及装置 | |
US10649763B2 (en) | Resource efficient deployment of multiple hot patches | |
CN116361012B (zh) | 一种内存页分配方法及电子设备 | |
CN112711469A (zh) | 云主机迁移方法、装置、计算机设备和存储介质 | |
US20180267838A1 (en) | Open-ended policies for virtual computing instance provisioning | |
WO2017078132A1 (ja) | モバイル端末およびアプリケーションプログラム | |
CN116541180B (zh) | 内存分配方法、电子设备及存储介质 | |
CN117708070A (zh) | 一种文件压缩方法及电子设备 | |
CN111198740B (zh) | 图形用户界面的处理方法、装置、设备和存储介质 | |
CN116521256A (zh) | Activity启动方法、装置、存储介质及处理器 | |
CN117742929A (zh) | 内存回收方法、电子设备以及存储介质 | |
CN116700866A (zh) | 窗口绘制方法、装置、电子设备 | |
CN116594534A (zh) | 应用显示方法及电子设备 | |
CN117707657A (zh) | 应用界面的显示方法、电子设备及计算机可读存储介质 | |
CN115509643A (zh) | 云应用启动方法、装置、计算机设备和存储介质 | |
TW201028924A (en) | System and apparatus for deleting and writing data of DMI in the Linux operation system |
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 | ||
GR01 | Patent grant |