CN111158910A - 内存管理方法、装置、存储介质及电子设备 - Google Patents
内存管理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN111158910A CN111158910A CN201911381798.8A CN201911381798A CN111158910A CN 111158910 A CN111158910 A CN 111158910A CN 201911381798 A CN201911381798 A CN 201911381798A CN 111158910 A CN111158910 A CN 111158910A
- Authority
- CN
- China
- Prior art keywords
- memory
- amount
- thread
- target
- recovery
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 627
- 238000007726 management method Methods 0.000 title claims abstract description 51
- 238000011084 recovery Methods 0.000 claims abstract description 182
- 238000000034 method Methods 0.000 claims description 57
- 238000004590 computer program Methods 0.000 claims description 20
- 238000007906 compression Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 claims description 19
- 230000006835 compression Effects 0.000 claims description 18
- 238000004064 recycling Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 8
- 230000002618 waking effect Effects 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000026676 system process Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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
- 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
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
Abstract
本申请实施例公开了一种内存管理方法、装置、存储介质及电子设备,其中,本申请实施例的方案,当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断目标线程是否为UI线程;当目标线程为UI线程时,判断空闲内存量是否小于第一预设阈值;若是,则确定第一目标内存量,并基于第一目标内存量进行内存回收;当目标线程不为UI线程时,判断空闲内存量是否小于第二预设阈值;若是,则确定第二目标内存量,并基于第二目标内存量进行内存回收,对UI线程来说,有更加充裕的内存用于分配,从而减少UI线程的低内存场景发生的概率,提高UI线程的运行流畅性,减少卡顿,从而提高系统流畅性。
Description
技术领域
本申请涉及终端技术领域,具体涉及一种内存管理方法、装置、存储介质及电子设备。
背景技术
随着技术的发展,电子设备中安装的各类应用程序越来越多,例如视频类应用、游戏类应用以及即时通讯类应用等。这使得电子设备经常需要在前台和后台运行很多个应用程序。相关技术中,当电子设备中运行多个应用程序时,该电子设备容易出现系统卡顿。
发明内容
本申请实施例提供一种内存管理方法、装置、存储介质及电子设备,能够减少系统卡顿,提高系统流畅度。
第一方面,本申请实施例提供一种内存管理方法,包括:
当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断所述目标线程是否为UI线程;
当所述目标线程为UI线程时,判断所述空闲内存量是否小于第一预设阈值;
若所述空闲内存量小于所述第一预设阈值,则确定第一目标内存量,并基于所述第一目标内存量进行内存回收;
当所述目标线程不为UI线程时,判断所述空闲内存量是否小于第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
若所述空闲内存量小于所述第二预设阈值,则确定第二目标内存量,并基于所述第二目标内存量进行内存回收。
第二方面,本申请实施例提供一种内存管理装置,包括:
请求处理模块,用于当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断所述目标线程是否为UI线程;
内存检测模块,用于当所述目标线程为UI线程时,判断所述空闲内存量是否小于第一预设阈值;
内存回收模块,用于若所述空闲内存量小于所述第一预设阈值,则确定第一目标内存量,并基于所述第一目标内存量进行内存回收;
所述内存检测模块还用于:当所述目标线程不为UI线程时,判断所述空闲内存量是否小于第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
所述内存回收模块还用于:若所述空闲内存量小于所述第二预设阈值,则确定第二目标内存量,并基于所述第二目标内存量进行内存回收。
第三方面,本申请实施例提供一种存储介质,其上存储有计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如本申请任一实施例提供的内存管理方法。
第四方面,本申请实施例提供一种电子设备,包括处理器和存储器,所述存储器有计算机程序,所述处理器通过调用所述计算机程序,用于执行如本申请任一实施例提供的内存管理方法。
本申请实施例提供的方案,在接收到线程发送的内存分配请求时,先确定内存空间中的空闲内存量,并判断该线程是否为UI线程,当该线程为UI线程时,若空闲内存量小于第一预设阈值,则确定第一目标内存量,并基于该第一目标内存量启动内存回收,当该线程不是UI线程时,若空闲内存量小于第二预设阈值,则确定第二目标内存量,并基于该第二目标内存量启动内存回收,其中,第二预设阈值大于第一预设阈值。由于UI线程为与用户界面显示相关的线程,若分配给UI线程的运行内存不足,则容易引起界面显示的卡顿。本申请分别为UI线程和非UI线程设置不同的用于启动内存回收的阈值,并且非UI线程对应的阈值大于UI线程对应的阈值,通过这种方式,当系统内存低于第二预设阈值时,非UI线程就触发内存回收了,而UI线程必须要等到空闲内存量小于第一预设阈值时,才会进行内存回收,因此,第一预设阈值与第二预设阈值之间的内存量只能由UI线程使用,对于UI线程来说,有更加充裕的内存用于分配,可以保证UI线程能够及时分配到内存,从而减少UI线程的低内存场景发生的概率,提高UI线程的运行流畅性,减少卡顿,从而提高系统流畅性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的内存管理方法的第一种流程示意图。
图2为本申请实施例提供的内存管理方法的第二种流程示意图。
图3为本申请实施例提供的内存管理装置的结构示意图。
图4为本申请实施例提供的电子设备的第一种结构示意图。
图5为本申请实施例提供的电子设备的第二种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请的保护范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例提供一种内存管理方法,该内存管理方法的执行主体可以是本申请实施例提供的内存管理装置,或者集成了该内存管理装置的电子设备,其中该内存管理装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。
请参阅图1,图1为本申请实施例提供的内存管理方法的第一种流程示意图。本申请实施例提供的内存管理方法的具体流程可以如下:
在101中,当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断目标线程是否为UI线程。
电子设备的系统进程和应用程序的进程的运行,都需要系统内核为其分配内存空间。并且随着系统的运行情况,内核不断地进行着内存的回收与分配等。
需要说明的是,以linux系统为例,对于系统内核来说,把所有线程都当作进程来实现。内核并没有准备特别的调度算法或者定义特别的数据结构来表示线程。此处的线程仅仅被视为一个与其它进程共享资源的进程。每个线程都具有各自对应的task struct,所以从内核的角度来说,线程看起来就像是一个普通的进程(只是该进程和其他一些进程共享某些资源,如地址空间)。故,下文中并不特别区分发送内存分配请求的是线程还是进程,基于上述原理,对于系统内核来说,无论发送内存分配请求的对象是还是进程,其处理方式都是相同的。
其中,task struct是一种被称为进程描述符的结构体数据,一个线程结构体数据中包含有该线程的所有信息,因此,在一些实施例中,可以通过在对应的task struct数据中添加标识的方式,将线程标记为UI(User Interface,用户界面)线程。本申请实施例中的UI线程是指与用户和电子设备交互相关的线程,UI线程的运行是否流畅,会直接的影响到用户体验。
本申请实施例中,向内核发送内存分配请求的线程都可以作为目标线程,当内核接收到内存分配请求时,获取该内存分配请求对应的目标线程的task struct数据,并根据该task struct数据判断目标线程是否为UI线程。比如,当检测到目标线程的task struct数据中包含有预设标识信息时,判定目标线程为UI线程,若检测到目标线程的task struct数据中没有预设标识信息时,则判定目标线程不为UI线程。其中,目标线程可以是系统线程,也可以是应用程序的线程。
此外,在接收到目标线程发送的内存分配请求时,还需要确定系统当前剩余的空闲内存量,其中,空闲内存量是指系统的整个内存空间中还未分配的、处于空闲状态的剩余内存空间的容量,例如,电子设备的内存空间总大小为4G,其中有3G已经分配给一个或者多个运行中的进程使用,另外1G处于空闲状态,则该电子设备当前的空闲内存量为1G。
在102中,当目标线程为UI线程时,判断空闲内存量是否小于第一预设阈值。
在103中,若空闲内存量小于第一预设阈值,则确定第一目标内存量,并基于第一目标内存量进行内存回收。
本申请实施例中预先为UI线程和非UI线程设置对应的内存水线,内存水线用于系统物理内存的空闲情况和使用压力。
其中,UI线程对应的内存水线为第一预设阈值,非UI线程的内存水线为第二预设阈值,第二预设阈值大于第一阈值。例如,第一预设阈值600M,第二预设阈值为800M。需要说明的是,此处的阈值数字仅为举例说明,在实际应用中,可以根据需要设置第一预设阈值和第二预设阈值的大小,只要满足第二预设阈值大于第一预设阈值即可。
当检测到目标线程为UI线程时,判断当前的空闲内存量是否小于第一预设阈值600M。假设检测到当前的空闲内存量为560M,则可以判定空闲内存量小于第一预设阈值,说明当前系统已经处于低内存状态,需要进行内存回收。接下来,内核确定第一目标内存量,以该第一目标内存量作为回收目标启动内存回收操作。
例如,在一些实施例中,将第一预设阈值作为第一目标内存量,即需要回收40M的内存空间,以使剩余的空闲内存量达到第一预设阈值600M。
又例如,在一些实施例中,确定内存分配请求对应的内存需求量,根据第一预设阈值和内存需求量确定第一目标内存量,例如,第一预设阈值为600M,内存需求量为10M,则第一目标内存量为610M。需要回收50M的内存空间,以使剩余的空闲内存量达到第一预设阈值610M。
在103中,内核进行内存回收时,可以有多种回收方式,例如,进行内存页回收、内存压缩,关闭进程等。在进行内存回收时,内核可以采用上述多种回收方式中的任意一种或者多种方式。当采用多种方式进行内存回收时,这多种内存回收方式可以并行。
其中,关于内存页回收的方式,可以基于LRU(Least Recently Used,最近最少使用)链表,从文件页(File-backed Page)中选择数量与需要回收的内存量匹配的文件页作为目标文件页,并回收这些目标文件页。
关于内存压缩的方式,选择匿名页作为内存压缩处理的对象,其中,匿名页为应用程序动态分配的堆内存的内存页。由于匿名页很可能还要再次被访问,不能直接回收,这些内存自然不能直接释放。因此,采用内存压缩的方式间接地释放他们所占的内存空间。例如,先确定已分配内存页中的匿名页,从全部匿名页中选择一定数量的内存页作为目标内存页。其中,目标内存页的数量可以根据需要回收的内存量来确定,例如,需要回收的内存量为50M,则根据待回收的内存量和期望压缩率,计算需要的目标内存页的数量。
关于关闭进程的方式,内核会从处于运行状态的全部进程中选择目标进程作为关闭的对象。一般情况下,在选择进程时,会根据进程的重要程度选择要关闭的进程,本申请实施例中通过为进程设置进程级别来表示进程的重要程度。本申请实施例中的进程包括系统进程和应用程序进程,并为这些进程设置级别。进程的级别越小,则重要程度越高,被回收的可能性越低,级别越大,越容易被为进程关闭的对象。因此,在选择要关闭的进程时,从运行中的进程中选择级别最高的进程关闭。
可以理解的是,判断空闲内存量是否小于第一预设阈值之后,该方法还包括:若空闲内存量大于或等于第一预设阈值,则基于空闲内存空间响应内存分配请求。例如,内存需求量为10M,则从当前大小为560M的空闲内存空间中确定出与内存需求量匹配的连续多个内存页,基于这训连续多个内存页响应内存分配请求。
在104中,当目标线程不为UI线程时,判断空闲内存量是否小于第二预设阈值,其中,第二预设阈值大于第一预设阈值。
在105中,若空闲内存量小于第二预设阈值,则确定第二目标内存量,并基于第二目标内存量进行内存回收。
当检测到目标线程不是UI线程时,判断当前的空闲内存量是否小于第二预设阈值800M。假设检测到当前的空闲内存量为780M,则可以判定空闲内存量小于第二预设阈值,说明当前系统已经处于低内存状态,需要进行内存回收。接下来,内核确定第二目标内存量,以该第二目标内存量作为回收目标启动内存回收操作。其中,105中确定第二目标内存量的方式,以及内存回收的方式,与103中的原理类似,此处不再赘述。
可以理解的是,判断空闲内存量是否小于第二预设阈值之后,还包括:若空闲内存量大于或等于第二预设阈值,则基于空闲内存空间响应内存分配请求。
具体实施时,本申请不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
由于UI线程为与用户界面显示相关的线程,若分配给UI线程的运行内存不足,则容易引起界面显示的卡顿。但是,常规的内存管理方案中,并没有针对UI线程的内存管理进行任何的特别处理,其内存分配与回收机制与其他线程并无区别。而从用户体验来说,UI线程的重要性显然是高于其他后台进程的,UI线程的流畅性一定程度会直接地影响用户体验,所以这种不分场景的内存回收操作会较大概率地导致UI线程长时间由于低内存而处于等待状态,导致前台卡顿,影响用户体验。
本申请实施例提出的内存管理方法,分别为UI线程和非UI线程设置不同的用于启动内存回收的阈值,并且非UI线程对应的阈值大于UI线程对应的阈值,通过这种方式,当系统内存低于第二预设阈值时,非UI线程就触发内存回收了,而UI线程必须要等到空闲内存量小于第一预设阈值时,才会进行内存回收,因此,第一预设阈值与第二预设阈值之间的内存量只能由UI线程使用,对于UI线程来说,有更加充裕的内存用于分配,可以保证UI线程能够及时分配到内存,从而减少UI线程由于低内存场景而发生等待的概率,提高UI线程的运行流畅性,减少卡顿,从而提高系统流畅性。
以第一预设阈值为600M,第二预设阈值为800M为例,对于系统内核来说,如果是非UI线程发送的内存分配请求,则检测空闲内存量是否小于800M,如果是,则判定系统当前处于低内存状态,启动内存回收,内存回收完成后,再基于当前的空闲内存空间响应内存分配请求。这样做的目的在于,能够使得系统空闲内存经常保持在第一预设阈值之上。如果是UI线程发送的内存分配请求,则检测空闲内存量是否小于600M,如果不是,则直接响应该内存分配请求进行内存分配,如果小于600M,则启动内存回收,由于非UI线程已经触发了在空闲内存量是否小于800M时进行了内存回收,因此,一般情况下,空闲内存量大概率是大于600M的,那么对于UI线程来说,需要启动内存回收的情况会比较少,需要处于等待状态的情况也会比较少,600M与800M之间的内存量只会分配给UI线程处理,对于UI线程来说,有更加充裕的内存用于分配,可以保证UI线程能够及时分配到内存,提高UI线程的运行流畅性。
在一些实施例中,若空闲内存量小于第一预设阈值,则确定第一目标内存量,并基于第一目标内存量进行内存回收,包括:若空闲内存量小于第一预设阈值,则确定内存分配请求对应的内存需求量;根据第一预设阈值和内存需求量确定目标内存量;唤醒内存回收线程,以使内存回收线程基于第一回收机制和第一目标内存量进行内存回收。
该实施例中,内存回收线程可以是系统中用于内存回收的内核线程,例如kswapd线程。kswapd线程工作于系统后台,当内核根据目标内存量确定出需要回收的内存量时,唤醒kswapd线程执行内存回收操作,kswapd线程可以基于第一回收机制和目标内存量进行内存回收。在一些实施例中,按照第一回收机制进行内存回收,包括:根据第一目标内存量和空闲内存量确定内存回收量;将内存回收量划分为第一回收量和第二回收量,其中,第一回收量大于第二回收量;基于第一回收量进行内存压缩处理,基于第二回收量进行内存页回收处理。kswapd线程在基于第一回收机制回收内存时,采用两种内存回收方式:内存压缩和内存页回收。并且内存压缩方式对应的回收量大于内存页回收方式对应的回收量,也就是说,当采用第一回收机制进行内存回收时,更多地偏重内存压缩的方式回收内存。或者,在另外一些实施例中,按照第一回收机制进行内存回收可以为采用内存压缩的方式回收内存。例如,如果内存回收量为100M,则20M采用内存页回收的方式进行回收,另外80M采用内存压缩的方式回收。
下面将在上述实施例描述的方法基础上,对本申请的内存管理方法做进一步详细介绍。请参阅图2,图2为本发明实施例提供的内存管理方法的第二流程示意图。方法包括:
在201中,当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断目标线程是否为UI线程。
当内核接收到内存分配请求时,获取该内存分配请求对应的目标线程的taskstruct数据,并根据该task struct数据判断目标线程是否为UI线程。具体判断方式请参照上述实施例,在此不再赘述。此外,在接收到目标线程发送的内存分配请求时,还需要确定系统当前剩余的空闲内存量。
在202中,当目标线程为UI线程时,判断空闲内存量是否小于第一预设阈值。
本申请实施例中预先为UI线程和非UI线程设置对应的内存水线,内存水线用于系统物理内存的空闲情况和使用压力。
其中,UI线程对应的内存水线为第一预设阈值,非UI线程的内存水线为第二预设阈值,第二预设阈值大于第一阈值。例如,第一预设阈值600M,第二预设阈值为800M。需要说明的是,此处的阈值数字仅为举例说明,在实际应用中,可以根据需要设置第一预设阈值和第二预设阈值的大小,只要满足第二预设阈值大于第一预设阈值即可。
当检测到目标线程为UI线程时,判断当前的空闲内存量是否小于第一预设阈值600M。假设检测到当前的空闲内存量为560M,则可以判定空闲内存量小于第一预设阈值,说明当前系统已经处于低内存状态,需要进行内存回收。
在203中,若空闲内存量小于第一预设阈值,则确定内存分配请求对应的内存需求量,并根据第一预设阈值和内存需求量确定第一目标内存量。
接下来,内核确定第一目标内存量,以该第一目标内存量作为回收目标启动内存回收操作。例如,第一预设阈值为600M,内存需求量为10M,则第一目标内存量为610M。需要回收50M的内存空间,以使剩余的空闲内存量达到第一预设阈值610M。
在204中,唤醒内存回收线程,以使内存回收线程基于第一回收机制和第一目标内存量进行内存回收。
内存回收线程可以是系统中用于内存回收的内核线程,例如kswapd线程。kswapd线程工作于系统后台,当内核根据目标内存量确定出需要回收的内存量时,唤醒kswapd线程执行内存回收操作,kswapd线程可以基于第一回收机制和目标内存量进行内存回收。
在205中,判断当前的空闲内存量是否小于第一预设阈值。
内核在唤醒kswapd线程之后,继续对当前的空闲内存量进行检测,并判断当前的空闲内存量是否小于第一预设阈值。
在206中,若当前的空闲内存量小于第一预设阈值,则基于目标线程,按照第二回收机制进行内存回收,以得到不小于第一目标内存量的空闲内存量。
如果当前的空闲内存量小于第一预设阈值,内核进行direct reclaim(直接回收),即直接在UI线程的线程上下文中进行回收,这时UI线程阻塞,内核直接进入directreclaim,基于第二回收机制进行内存回收。其中,第二回收机制回收内存的速度大于第一回收机制回收内存的速度。例如,第一回收机制为内存压缩,第二回收机制为内存页回收。或者,按照第一回收机制进行内存回收,包括:根据第一目标内存量和空闲内存量确定内存回收量;将内存回收量划分为第一回收量和第二回收量,其中,第一回收量大于第二回收量;基于第一回收量进行内存压缩处理,基于第二回收量进行内存页回收处理。按照第二回收机制进行内存回收包括:根据目标内存量和空闲内存量确定内存回收量;将内存回收量划分为第三回收量和第四回收量,其中,第四回收量大于第三回收量;基于第三回收量进行内存压缩处理,基于第四回收量进行内存页回收处理。
在207中,当目标线程不为UI线程时,判断空闲内存量是否小于第二预设阈值,其中,第二预设阈值大于第一预设阈值。
在208中,若空闲内存量小于第二预设阈值,则确定第二目标内存量,并基于第二目标内存量进行内存回收。
当检测到目标线程不是UI线程时,判断当前的空闲内存量是否小于第二预设阈值800M。假设检测到当前的空闲内存量为780M,则可以判定空闲内存量小于第二预设阈值,说明当前系统已经处于低内存状态,需要进行内存回收。接下来,内核确定第二目标内存量,以该第二目标内存量作为回收目标启动内存回收操作。
由上可知,本发明实施例提出的内存管理方法,分别为UI线程和非UI线程设置不同的用于启动内存回收的阈值,并且非UI线程对应的阈值大于UI线程对应的阈值,通过这种方式,当系统内存低于第二预设阈值时,非UI线程就触发内存回收了,而UI线程必须要等到空闲内存量小于第一预设阈值时,才会进行内存回收,因此,第一预设阈值与第二预设阈值之间的内存量只能由UI线程使用,对于UI线程来说,有更加充裕的内存用于分配,可以保证UI线程能够及时分配到内存,并且,在此基础上,在后台启动内存回收线程进行内存回收的同时,内核还会进行direct reclaim(直接回收),即直接在UI线程的线程上下文中进行回收,这时UI线程阻塞,内核直接进入directreclaim,基于第二回收机制进行内存回收。为了避免UI线程等待时间过长,在系统的空闲内存量小于第一预设阈值时,为了尽快地完成内存回收使得UI线程可以继续运行,在内存回收线程在后台进行内存回收的同时,内核还直接进行内存回收,提高内存回收效率,缩短阻塞时间。
在一实施例中还提供了一种内存管理装置。请参阅图3,图3为本申请实施例提供的内存管理装置300的结构示意图。其中该内存管理装置300应用于电子设备,该内存管理装置300包括请求处理模块301、内存检测模块302以及内存回收模块303,如下:
请求处理模块301,用于当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断所述目标线程是否为UI线程;
内存检测模块302,用于当所述目标线程为UI线程时,判断所述空闲内存量是否小于第一预设阈值;
内存回收模块303,用于若所述空闲内存量小于所述第一预设阈值,则确定第一目标内存量,并基于所述第一目标内存量进行内存回收;
内存检测模块302还用于:当所述目标线程不为UI线程时,判断所述空闲内存量是否小于第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
内存回收模块303还用于:若所述空闲内存量小于所述第二预设阈值,则确定第二目标内存量,并基于所述第二目标内存量进行内存回收。
在一些实施例中,该内存管理装置300还包括内存分配模块,该内存分配模块用于:若所述空闲内存量大于或等于所述第一预设阈值,则基于空闲内存空间响应所述内存分配请求。
在一些实施例中,内存回收模块303还用于:若所述空闲内存量小于所述第一预设阈值,则确定所述内存分配请求对应的内存需求量;
根据所述第一预设阈值和所述内存需求量确定第一目标内存量;
唤醒内存回收线程,以使所述内存回收线程基于第一回收机制和所述第一目标内存量进行内存回收。
在一些实施例中,内存回收模块303还用于:根据所述第一目标内存量和空闲内存量确定内存回收量;
将所述内存回收量划分为第一回收量和第二回收量,其中,所述第一回收量大于所述第二回收量;
基于第一回收量进行内存压缩处理,基于所述第二回收量进行内存页回收处理。
在一些实施例中,内存检测模块302还用于:在内存回收模块303唤醒内存回收线程之后,判断当前的空闲内存量是否小于所述第一预设阈值;
内存回收模块303还用于:若当前的空闲内存量小于所述第一预设阈值,则基于所述目标线程,按照第二回收机制进行内存回收,以得到不小于所述第一目标内存量的空闲内存量。
在一些实施例中,内存回收模块303还用于:确定所述目标线程的线程上下文;基于所述线程上下文,按照第二回收机制进行内存回收,以得到不小于所述第一目标内存量的空闲内存量。
在一些实施例中,所述第一回收机制为内存压缩,所述第二回收机制为内存页回收。
具体实施时,以上各个模块可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个模块的具体实施可参见前面的方法实施例,在此不再赘述。
应当说明的是,本申请实施例提供的内存管理装置与上文实施例中的内存管理方法属于同一构思,在内存管理装置上可以运行内存管理方法实施例中提供的任一方法,其具体实现过程详见内存管理方法实施例,此处不再赘述。
由于UI线程为与用户界面显示相关的线程,若分配给UI线程的运行内存不足,则容易引起界面显示的卡顿。本申请实施例提出的内存管理装置,在接收到线程发送的内存分配请求时,先确定内存空间中的空闲内存量,并判断该线程是否为UI线程,当该线程为UI线程时,若空闲内存量小于第一预设阈值,则确定第一目标内存量,并基于该第一目标内存量启动内存回收,当该线程不是UI线程时,若空闲内存量小于第二预设阈值,则确定第二目标内存量,并基于该第二目标内存量启动内存回收,其中,第二预设阈值大于第一预设阈值。由于UI线程为与用户界面显示相关的线程,若分配给UI线程的运行内存不足,则容易引起界面显示的卡顿。本申请分别为UI线程和非UI线程设置不同的用于启动内存回收的阈值,并且非UI线程对应的阈值大于UI线程对应的阈值,通过这种方式,当系统内存低于第二预设阈值时,非UI线程就触发内存回收了,而UI线程必须要等到空闲内存量小于第一预设阈值时,才会进行内存回收,因此,第一预设阈值与第二预设阈值之间的内存量只能由UI线程使用,对于UI线程来说,有更加充裕的内存用于分配,可以保证UI线程能够及时分配到内存,从而减少UI线程的低内存场景发生的概率,提高UI线程的运行流畅性,减少卡顿,从而提高系统流畅性。
本申请实施例还提供一种电子设备。所述电子设备可以是智能手机、平板电脑等设备。请参阅图4,图4为本申请实施例提供的电子设备的第一种结构示意图。电子设备400包括处理器401和存储器402。其中,处理器401与存储器402电性连接。
处理器401是电子设备400的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或调用存储在存储器402内的计算机程序,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。
存储器402可用于存储计算机程序和数据。存储器402存储的计算机程序中包含有可在处理器中执行的指令。计算机程序可以组成各种功能模块。处理器401通过调用存储在存储器402的计算机程序,从而执行各种功能应用以及数据处理。其中,存储器402包括内存储器和外存储器,内存储器为电子设备的运行提供内存空间,外储存器是指除计算机内存及CPU缓存以外的储存器,此类储存器一般断电后仍然能保存数据,例如硬盘、软盘、U盘等。
在本实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,从而实现各种功能:
当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断所述目标线程是否为UI线程;
当所述目标线程为UI线程时,判断所述空闲内存量是否小于第一预设阈值;
若所述空闲内存量小于所述第一预设阈值,则确定第一目标内存量,并基于所述第一目标内存量进行内存回收;
当所述目标线程不为UI线程时,判断所述空闲内存量是否小于第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
若所述空闲内存量小于所述第二预设阈值,则确定第二目标内存量,并基于所述第二目标内存量进行内存回收。
在一些实施例中,请参阅图5,图5为本申请实施例提供的电子设备的第二种结构示意图。电子设备400还包括:射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409。其中,处理器401分别与射频电路403、显示屏404、控制电路405、输入单元406、音频电路407、传感器408以及电源409电性连接。
射频电路403用于收发射频信号,以通过无线通信与网络设备或其他电子设备进行通信。
显示屏404可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图像、文本、图标、视频和其任意组合来构成。
控制电路405与显示屏404电性连接,用于控制显示屏404显示信息。
输入单元406可用于接收输入的数字、字符信息或用户特征信息(例如指纹),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。其中,输入单元406可以包括指纹识别模组。
音频电路407可通过扬声器、传声器提供用户与电子设备之间的音频接口。其中,音频电路407包括麦克风。所述麦克风与所述处理器401电性连接。所述麦克风用于接收用户输入的语音信息。
传感器408用于采集外部环境信息。传感器408可以包括环境亮度传感器、加速度传感器、陀螺仪等传感器中的一种或多种。
电源409用于给电子设备400的各个部件供电。在一些实施例中,电源409可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
虽然图中未示出,电子设备400还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本实施例中,电子设备400中的处理器401会按照如下的步骤,将一个或一个以上的计算机程序的进程对应的指令加载到存储器402中,并由处理器401来运行存储在存储器402中的计算机程序,从而实现各种功能:
当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断所述目标线程是否为UI线程;
当所述目标线程为UI线程时,判断所述空闲内存量是否小于第一预设阈值;
若所述空闲内存量小于所述第一预设阈值,则确定第一目标内存量,并基于所述第一目标内存量进行内存回收;
当所述目标线程不为UI线程时,判断所述空闲内存量是否小于第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
若所述空闲内存量小于所述第二预设阈值,则确定第二目标内存量,并基于所述第二目标内存量进行内存回收。
在一些实施例中,判断所述空闲内存量是否小于第一预设阈值之后,处理器401还执行:
若所述空闲内存量大于或等于所述第一预设阈值,则基于空闲内存空间响应所述内存分配请求。
在一些实施例中,若所述空闲内存量小于所述第一预设阈值,则确定第一目标内存量,并基于所述第一目标内存量进行内存回收时,处理器401执行:
若所述空闲内存量小于所述第一预设阈值,则确定所述内存分配请求对应的内存需求量;
根据所述第一预设阈值和所述内存需求量确定第一目标内存量;
唤醒内存回收线程,以使所述内存回收线程基于第一回收机制和所述第一目标内存量进行内存回收。
在一些实施例中,按照第一回收机制进行内存回收时,处理器401执行:
根据所述第一目标内存量和空闲内存量确定内存回收量;
将所述内存回收量划分为第一回收量和第二回收量,其中,所述第一回收量大于所述第二回收量;
基于第一回收量进行内存压缩处理,基于所述第二回收量进行内存页回收处理。
在一些实施例中,所述唤醒内存回收线程之后,处理器401还执行:
判断当前的空闲内存量是否小于所述第一预设阈值;
若当前的空闲内存量小于所述第一预设阈值,则基于所述目标线程,按照第二回收机制进行内存回收,以得到不小于所述第一目标内存量的空闲内存量。
在一些实施例中,基于所述目标线程,按照第二回收机制进行内存回收,以得到不小于所述第一目标内存量的空闲内存量时,处理器401执行:
确定所述目标线程的线程上下文;
基于所述线程上下文,按照第二回收机制进行内存回收,以得到不小于所述第一目标内存量的空闲内存量。
由上可知,本申请实施例提供了一种电子设备,所述电子设备在接收到线程发送的内存分配请求时,先确定内存空间中的空闲内存量,并判断该线程是否为UI线程,当该线程为UI线程时,若空闲内存量小于第一预设阈值,则确定第一目标内存量,并基于该第一目标内存量启动内存回收,当该线程不是UI线程时,若空闲内存量小于第二预设阈值,则确定第二目标内存量,并基于该第二目标内存量启动内存回收,其中,第二预设阈值大于第一预设阈值。由于UI线程为与用户界面显示相关的线程,若分配给UI线程的运行内存不足,则容易引起界面显示的卡顿。本申请分别为UI线程和非UI线程设置不同的用于启动内存回收的阈值,并且非UI线程对应的阈值大于UI线程对应的阈值,通过这种方式,当系统内存低于第二预设阈值时,非UI线程就触发内存回收了,而UI线程必须要等到空闲内存量小于第一预设阈值时,才会进行内存回收,因此,第一预设阈值与第二预设阈值之间的内存量只能由UI线程使用,对于UI线程来说,有更加充裕的内存用于分配,可以保证UI线程能够及时分配到内存,从而减少UI线程的低内存场景发生的概率,提高UI线程的运行流畅性,减少卡顿,从而提高系统流畅性。
本申请实施例还提供一种存储介质,所述存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,所述计算机执行上述任一实施例所述的内存管理方法。
需要说明的是,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可以存储于计算机可读存储介质中,所述存储介质可以包括但不限于:只读存储器(ROM,Read OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
此外,本申请中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、系统、产品或设备没有限定于已列出的步骤或模块,而是某些实施例还包括没有列出的步骤或模块,或某些实施例还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。
以上对本申请实施例所提供的内存管理方法、装置、存储介质及电子设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种内存管理方法,其特征在于,包括:
当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断所述目标线程是否为UI线程;
当所述目标线程为UI线程时,判断所述空闲内存量是否小于第一预设阈值;
若所述空闲内存量小于所述第一预设阈值,则确定第一目标内存量,并基于所述第一目标内存量进行内存回收;
当所述目标线程不为UI线程时,判断所述空闲内存量是否小于第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
若所述空闲内存量小于所述第二预设阈值,则确定第二目标内存量,并基于所述第二目标内存量进行内存回收。
2.如权利要求1所述的内存管理方法,其特征在于,所述判断所述空闲内存量是否小于第一预设阈值之后,还包括:
若所述空闲内存量大于或等于所述第一预设阈值,则基于空闲内存空间响应所述内存分配请求。
3.如权利要求1所述的内存管理方法,其特征在于,所述若所述空闲内存量小于所述第一预设阈值,则确定第一目标内存量,并基于所述第一目标内存量进行内存回收,包括:
若所述空闲内存量小于所述第一预设阈值,则确定所述内存分配请求对应的内存需求量;
根据所述第一预设阈值和所述内存需求量确定第一目标内存量;
唤醒内存回收线程,以使所述内存回收线程基于第一回收机制和所述第一目标内存量进行内存回收。
4.如权利要求3所述的内存管理方法,其特征在于,按照第一回收机制进行内存回收,包括:
根据所述第一目标内存量和空闲内存量确定内存回收量;
将所述内存回收量划分为第一回收量和第二回收量,其中,所述第一回收量大于所述第二回收量;
基于第一回收量进行内存压缩处理,基于所述第二回收量进行内存页回收处理。
5.如权利要求3所述的内存管理方法,其特征在于,所述唤醒内存回收线程之后,还包括:
判断当前的空闲内存量是否小于所述第一预设阈值;
若当前的空闲内存量小于所述第一预设阈值,则基于所述目标线程,按照第二回收机制进行内存回收,以得到不小于所述第一目标内存量的空闲内存量。
6.如权利要求5所述的内存管理方法,其特征在于,所述基于所述目标线程,按照第二回收机制进行内存回收,以得到不小于所述第一目标内存量的空闲内存量,包括:
确定所述目标线程的线程上下文;
基于所述线程上下文,按照第二回收机制进行内存回收,以得到不小于所述第一目标内存量的空闲内存量。
7.如权利要求3所述的内存管理方法,其特征在于,所述第一回收机制为内存压缩,所述第二回收机制为内存页回收。
8.一种内存管理装置,其特征在于,包括:
请求处理模块,用于当接收到目标线程发送的内存分配请求时,确定内存空间中的空闲内存量,并判断所述目标线程是否为UI线程;
内存检测模块,用于当所述目标线程为UI线程时,判断所述空闲内存量是否小于第一预设阈值;
内存回收模块,用于若所述空闲内存量小于所述第一预设阈值,则确定第一目标内存量,并基于所述第一目标内存量进行内存回收;
所述内存检测模块还用于:当所述目标线程不为UI线程时,判断所述空闲内存量是否小于第二预设阈值,其中,所述第二预设阈值大于所述第一预设阈值;
所述内存回收模块还用于:若所述空闲内存量小于所述第二预设阈值,则确定第二目标内存量,并基于所述第二目标内存量进行内存回收。
9.一种存储介质,其上存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至7任一项所述的内存管理方法。
10.一种电子设备,包括处理器和存储器,所述存储器存储有计算机程序,其特征在于,所述处理器通过调用所述计算机程序,用于执行如权利要求1至7任一项所述的内存管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911381798.8A CN111158910B (zh) | 2019-12-27 | 2019-12-27 | 内存管理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911381798.8A CN111158910B (zh) | 2019-12-27 | 2019-12-27 | 内存管理方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111158910A true CN111158910A (zh) | 2020-05-15 |
CN111158910B CN111158910B (zh) | 2024-01-12 |
Family
ID=70558668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911381798.8A Active CN111158910B (zh) | 2019-12-27 | 2019-12-27 | 内存管理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111158910B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813520A (zh) * | 2020-07-01 | 2020-10-23 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
CN111831433A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 资源分配方法、装置、存储介质及电子设备 |
CN111831441A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111831440A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111831438A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 资源分配方法、装置、存储介质及电子设备 |
CN111831444A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111831436A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | Io请求的调度方法、装置、存储介质及电子设备 |
CN112099955A (zh) * | 2020-09-27 | 2020-12-18 | 合肥移瑞通信技术有限公司 | 安卓系统运行内存的控制方法、装置及介质、计算机设备 |
CN112463358A (zh) * | 2020-10-29 | 2021-03-09 | 北京罗克维尔斯科技有限公司 | 内存管理方法、装置、车载系统以及车辆 |
CN113076194A (zh) * | 2021-03-29 | 2021-07-06 | Oppo广东移动通信有限公司 | 内存资源分配方法、装置、终端和存储介质 |
CN113986559A (zh) * | 2021-12-24 | 2022-01-28 | 荣耀终端有限公司 | 内存管理方法和相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681940A (zh) * | 2012-05-15 | 2012-09-19 | 兰雨晴 | 一种针对Linux操作系统内存管理子系统进行性能测试的方法 |
CN108920263A (zh) * | 2018-06-08 | 2018-11-30 | 上海连尚网络科技有限公司 | 用于应用保持的方法与设备 |
WO2019137258A1 (zh) * | 2018-01-10 | 2019-07-18 | Oppo广东移动通信有限公司 | 内存处理方法、电子设备及计算机可读存储介质 |
CN110221921A (zh) * | 2019-06-13 | 2019-09-10 | 深圳Tcl新技术有限公司 | 内存管理方法、终端及计算机可读存储介质 |
-
2019
- 2019-12-27 CN CN201911381798.8A patent/CN111158910B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681940A (zh) * | 2012-05-15 | 2012-09-19 | 兰雨晴 | 一种针对Linux操作系统内存管理子系统进行性能测试的方法 |
WO2019137258A1 (zh) * | 2018-01-10 | 2019-07-18 | Oppo广东移动通信有限公司 | 内存处理方法、电子设备及计算机可读存储介质 |
CN108920263A (zh) * | 2018-06-08 | 2018-11-30 | 上海连尚网络科技有限公司 | 用于应用保持的方法与设备 |
CN110221921A (zh) * | 2019-06-13 | 2019-09-10 | 深圳Tcl新技术有限公司 | 内存管理方法、终端及计算机可读存储介质 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813520A (zh) * | 2020-07-01 | 2020-10-23 | Oppo广东移动通信有限公司 | 线程调度方法、装置、存储介质及电子设备 |
CN111831433A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 资源分配方法、装置、存储介质及电子设备 |
CN111831441A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111831440A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111831438A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 资源分配方法、装置、存储介质及电子设备 |
CN111831444A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | 内存回收方法、装置、存储介质及电子设备 |
CN111831436A (zh) * | 2020-07-01 | 2020-10-27 | Oppo广东移动通信有限公司 | Io请求的调度方法、装置、存储介质及电子设备 |
CN112099955A (zh) * | 2020-09-27 | 2020-12-18 | 合肥移瑞通信技术有限公司 | 安卓系统运行内存的控制方法、装置及介质、计算机设备 |
CN112463358A (zh) * | 2020-10-29 | 2021-03-09 | 北京罗克维尔斯科技有限公司 | 内存管理方法、装置、车载系统以及车辆 |
CN113076194A (zh) * | 2021-03-29 | 2021-07-06 | Oppo广东移动通信有限公司 | 内存资源分配方法、装置、终端和存储介质 |
CN113986559A (zh) * | 2021-12-24 | 2022-01-28 | 荣耀终端有限公司 | 内存管理方法和相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111158910B (zh) | 2024-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111158910B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
CN110888746B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
CN111078406B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
CN111078586B (zh) | 内存回收方法、装置、存储介质及电子设备 | |
WO2018059076A1 (zh) | 一种内存回收方法及装置 | |
CN111274039B (zh) | 内存回收方法、装置、存储介质及电子设备 | |
CN110764906B (zh) | 内存回收处理方法、装置、电子设备以及存储介质 | |
CN110895492B (zh) | 设备控制方法、装置、存储介质及电子设备 | |
CN109992402B (zh) | 内存处理方法和装置、电子设备、计算机可读存储介质 | |
CN108701026B (zh) | 用于在存储器约束下管理进程的方法和装置 | |
CN114096953A (zh) | 内存管理方法、装置、电子设备和计算机可读介质 | |
WO2019024641A1 (zh) | 数据同步方法、装置、存储介质以及电子设备 | |
CN111475299B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN115509953A (zh) | 内存回收方法及其装置 | |
CN111078587B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
WO2019128542A1 (zh) | 应用处理方法、电子设备、计算机可读存储介质 | |
CN111381953B (zh) | 进程管理方法、装置、存储介质及电子设备 | |
CN111008079B (zh) | 进程管理方法、装置、存储介质及电子设备 | |
CN110647294B (zh) | 存储块回收方法、装置、存储介质及电子设备 | |
CN111078405B (zh) | 内存分配方法、装置、存储介质及电子设备 | |
CN116700816A (zh) | 一种资源管理方法及电子设备 | |
CN115421907A (zh) | 内存回收方法、装置、电子设备及存储介质 | |
CN113032290A (zh) | 闪存配置方法、装置、电子设备和存储介质 | |
CN114218126A (zh) | 内存回收方法和装置 | |
CN113806238A (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 | ||
GR01 | Patent grant |