CN115794361A - 管理内存的方法和电子设备 - Google Patents
管理内存的方法和电子设备 Download PDFInfo
- Publication number
- CN115794361A CN115794361A CN202111060032.7A CN202111060032A CN115794361A CN 115794361 A CN115794361 A CN 115794361A CN 202111060032 A CN202111060032 A CN 202111060032A CN 115794361 A CN115794361 A CN 115794361A
- Authority
- CN
- China
- Prior art keywords
- memory
- thread
- preset threshold
- electronic device
- target
- 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
Links
Images
Classifications
-
- 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
Abstract
本申请提供了一种管理内存的方法和电子设备,所述方法应用于电子设备,所述方法包括:所述电子设备接收线程的内存分配请求;响应于所述内存分配请求,所述电子设备识别所述线程的类型是否属于目标线程;在确定所述线程属于所述目标线程时,所述电子设备降低所述目标线程对应的内存水位的第一预设阈值和第二预设阈值,其中,所述第一预设阈值小于所述第二预设阈值;所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略。该技术方案可以期降低目标线程在内存申请时的限制,从而可以提升用户体验。
Description
技术领域
本申请涉及电子技术领域,并且更具体地,涉及一种管理内存的方法和电子设备。
背景技术
随着应用的迭代更新,应用对电子设备的内存的需求越来越大,而应用在启动或运行的过程中,系统对于应用的线程的内存申请的响应速度直接影响到该应用操作的响应时延,进而会影响到用户的使用体验。
因此,电子设备对于应用的线程内存申请的管理是非常重要的。
发明内容
本申请提供一种管理内存的方法和电子设备,以期降低目标线程在内存申请时的限制,从而提升用户体验。
第一方面,提供了一种管理内存的方法,所述方法应用于电子设备,所述方法包括:所述电子设备接收线程的内存分配请求;响应于所述内存分配请求,所述电子设备识别所述线程的类型是否属于目标线程;在确定所述线程属于所述目标线程时,所述电子设备降低所述目标线程对应的内存水位的第一预设阈值和第二预设阈值,其中,所述第一预设阈值小于所述第二预设阈值;所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略。
应理解,该第一预设阈值可以是预先设定的,例如,设定一个初始值,然后可以根据一定的比例关系计算出第二预设阈值。或者,第二预设阈值时预先设定的,然后可以根据一定的比例关系计算出第一预设阈值。
这样,在线程向系统申请内存时,电子设备可以识别该线程的类型,若该线程属于目标线程,则降低目标线程对应的内存水位的第一预设阈值和第二预设阈值,并根据系统的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为线程分配内存的策略。从而可以降低目标线程在内存申请时的限制,以期提升用户体验。
结合第一方面,在第一方面的某些实现方式中,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略,包括:若所述空闲内存量大于所述降低后的第二预设阈值,则直接为所述线程分配内存。
在本申请的一个实施例中,当系统内存空间的空闲内存量大于降低后的第二预设阈值时,表示空闲内存较多,则可以直接为该目标线程分配内存。
结合第一方面,在第一方面的某些实现方式中,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略,包括:若所述空闲内存量小于或等于降低后的第二预设阈值,且大于降低后的第一预设阈值,则为所述线程分配内存的同时,利用第一线程执行内存回收操作,以将所述空闲内存量增加至第三预设阈值,其中,所述第三预设阈值大于所述降低后的第二预设阈值。
应理解,该第一线程可以为kswapd线程。该第三预设阈值可以根据第一预设阈值或第二预设计算得到,或者,该第三预设阈值也可以是事先预设的,本申请实施例对此不予限定。
在本申请的一个实施例中,当系统空闲内存量小于或等于降低后的第二预设阈值,且大于降低后的第一预设阈值时,表示系统内存可能会不足,则系统可以在为目标线程分配内存的同时,唤醒第一线程执行异步内存回收的操作,直至将该空闲内存量增加至第三预设阈值。
结合第一方面,在第一方面的某些实现方式中,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略,包括:若所述空闲内存量小于或等于降低后的第一预设阈值,则使用所述线程执行直接内存回收操作的同时,利用第一线程执行内存回收操作;在所述线程与所述第一线程执行内存回收操作的过程中,所述空闲内存量大于所述降低后的第一预设阈值时,为所述线程分配内存的同时,利用第一线程继续执行内存回收操作,以将所述空闲内存量增加至第三预设阈值,其中,所述第三预设阈值大于所述降低后的第二预设阈值。
在本申请的一个实施例中,当系统的空闲内存量小于或等于降低后的第一预设阈值,则意味着系统的空闲内存量严重不足,则此时,线程的内存申请请求会被阻塞,系统会利用该线程执行内存回收操作,并唤醒第一线程也执行内存回收操作,当空闲内存量增加至大于降低后的第一预设阈值时,系统会为该线程分配内存,该第一线程会继续进行内存回收操作,直至将空闲内存量增加至第三预设阈值。
结合第一方面,在第一方面的某些实现方式中,所述电子设备识别所述线程的类型是否属于目标线程,包括:根据所述线程的第一属性确定所述线程所属的应用是否为前台应用;在确定所述线程所属的应用为前台应用的情况下,确定所述线程是否为UI线程;在确定所述线程为UI线程时,确定所述线程为所述目标线程。
其中,该第一属性可以是线程所属应用的appScore的值,若该appScore=0,则可以确定该应用为前台应用。
应理解,该目标线程为关键线程,因为前台应用的UI线程对应的显示界面将直接呈现给用户,系统对该UI线程的内存申请的响应速度将直接影响到电子设备的界面的操作时延,进而会影响到用户的体验。
在本申请的一个实施例中,在根据线程的第一属性确定该线程为前台应用的情况下,当该线程为UI线程时,则可以确定该线程为目标线程。
结合第一方面,在第一方面的某些实现方式中,所述电子设备识别所述线程的类型是否属于目标线程,包括:根据所述线程的调度优先级确定所述线程是否为所述目标线程。
在本申请的一个实施例中,当该调度优先级的值小于或等于预设值时,则可以确定该线程为目标线程;当该调度优先级的值大于预设值时,则可以确定该线程不是目标线程。
例如,该预设值为100。该预设值还可以为其他值,本申请实施例对此不予限定。
结合第一方面,在第一方面的某些实现方式中,所述电子设备降低所述目标线程对应的内存水位的第一预设阈值和第二预设阈值,包括:将所述第一预设阈值和所述第二预设阈值分别除以数值K,其中,K大于1。
在本申请的一个实施例中,可以将该第一预设阈值与第二预设阈值分别除以数值K,K大于1,如,K=2。或者,将该第一预设阈值除以数值K1,K1大于1,将该第二预设阈值除以数值K2,K2大于1,在这种情况下,需要保证除以数值K1之后的第一预设阈值仍小于除以数值K2之后的第二预设阈值。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:在确定所述线程不属于所述目标线程时,所述电子设备增加所述线程对应的内存水位的第一预设阈值和第二预设阈值。
在本申请的一个实施例中,当一个线程不属于目标线程时,说明该线程不是特别关键的线程,则可以增加其对应的内存水位的第一预设阈值和第二预设阈值,从而可以将内存资源向关键线程(目标线程)倾斜,从而有利于保证关键线程的内存申请被及时响应。
结合第一方面,在第一方面的某些实现方式中,所述电子设备增加所述线程对应的内存水位的第一预设阈值和第二预设阈值,包括:将所述第一预设阈值和所述第二预设阈值分别乘以数值K,其中,K大于1。
结合第一方面,在第一方面的某些实现方式中,所述方法还包括:所述电子设备在预设时间内监测所述目标线程执行直接内存回收操作的次数;若预设时间内所述目标线程执行直接内存回收操作的次数大于前一个预设时间内所述目标线程执行直接内存回收操作的次数,则利用如下公式更新数值K,
K=K*max(1,lgΔDR)
其中,ΔDR表示预设时间内所述目标线程执行直接内存回收操作的次数与前一个预设时间内所述目标线程执行直接内存回收操作的次数的差。
这样,当一个监测周期的DR的次数比前一个监测周期的DR的次数增加时,表示目标线程向系统申请内存时被阻塞的次数增加,即目标线程的内存申请不能够被及时响应的次数增加,此时,可能会影响到用户的体验。因此,可以使用上述公式增加K的值,从而使得目标线程更容易申请到系统内存,减少其内存申请被阻塞的次数,从而提升用户体验。
第二方面,提供了一种电子设备,包括一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被一个或多个处理器执行时,使得如第一方面及其任一种可能的实现方式中所述的管理内存的方法被执行。
第三方面,提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口用于接收信号,并将所述信号传输至所述处理器,所述处理器处理所述信号,使得如第一方面及其任一种可能的实现方式中所述的管理内存的方法被执行。
第四方面,提供一种计算机存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机上运行时,使得如第一方面及其任一种可能的实现方式中所述的管理内存的方法被执行。
第五方面,提供一种计算机程序产品,包括计算机指令,当所述计算机指令在计算机上运行时,使得如第一方面及其任一种可能的实现方式中所述的管理内存的方法被执行。
附图说明
图1是本申请实施例提供的电子设备的结构示意图。
图2是本申请实施例提供的电子设备的软件结构示意图。
图3是本申请实施例提供的一种管理内存的方法的示意性框架图。
图4是本申请实施例提供的一种管理内存方法的示意性流程图。
图5是本申请实施例提供的一种管理内存方法的示意性流程图。
图6是本申请实施例提供的电子设备的示意性结构图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例中的电子设备可以指手机、平板、个人电脑,还可以是可穿戴设备,如手环、运动手表等,该电子设备还可以指具有显示屏的车载设备等,该电子设备还可以是用户设备、远程终端、移动设备、用户终端、终端、具有无线通信功能的手持设备,未来5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。
图1示出了电子设备100的结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(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)接口等。
I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。
I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。
PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。
UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。
MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。
GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),也可以采用有机发光二极管(organic light-emitting diode,OLED)、有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,AMOLED)、柔性发光二极管(flex light-emitting diode,FLED)、Miniled、MicroLed、Micro-oLed或量子点发光二极管(quantumdot light emitting diodes,QLED)等材料中的一种所制作的显示面板。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。摄像头193用于捕获静态图像或视频。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。
耳机接口170D用于连接有线耳机。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。
气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。
距离传感器180F,用于测量距离。
指纹传感器180H用于采集指纹。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。
骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。
按键190包括开机键,音量键等。
马达191可以产生振动提示。
指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
SIM卡接口195用于连接SIM卡。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图2是本申请实施例的电子设备100的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。应用程序层可以包括一系列应用程序包。
如图2所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
在介绍本申请的技术方案之前,首先简单介绍以下本申请方案可能涉及的一些专业术语。
进程(process):是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
线程(thread):是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。
直接内存回收(direct reclaim,DR):在为进程分配内存时发现空闲内存量严重不足,直接启动内存回收操作,此时,申请内存的进程会等待内存回收到一定量之后,才能分配到内存。
kswapd线程:属于内核的一个回收内存的线程,在为进程分配内存时发现空闲内存量较少,则为该进程分配内存的同时,启动kswapd线程回收其他空闲进程的内存。
内存水位:指的是系统在为线程分配内存时设定的阈值,系统可以根据空闲内存量与内存水位之间的关系确定内存分配策略。
随着应用的迭代更新,应用对电子设备的内存的需求越来越大,而应用在启动或运行的过程中,系统对于应用的线程的内存申请的响应速度直接影响到该应用操作的响应时延,进而会影响到用户的使用体验。因此,电子设备对于应用的线程内存申请的管理是非常重要的。
当前,尽管电子设备和固定服务器一般采用基于Linux内核的操作系统,但是电子设备的使用状态与服务器的情况差异越来越大。
一种情况是,用户在使用电子设备时,应用的线程在向系统申请内存时,电子设备对于内存的分配可以根据该应用是否处于前台进行划分,电子设备对于前台应用的内存申请的响应时延将直接影响到用户的使用体验。对于后台应用来说,用户对于电子设备的响应速度并不敏感。而在服务器中并没有明显的前后台的应用之分。
应理解,这里的应用处于电子设备的前台,可以理解为该应用的显示界面将直接显示在电子设备的屏幕中,可以直接接收用户的操作。应用处于后台,可以理解为该应用的尽管已经启动,但其显示界面对于用户不可见。
另一种情况是,随着单个应用的线程或线程数量的增加,同一个应用的不同线程对于内存的需求也是不同的,例如,对于应用的UI线程来说,其内存申请的响应速度会影响到显示界面的响应速度;对于应用的其他普通线程来说,对于显示界面的影响较小。而在服务器中也并没有明显的线程的区分。
因此,在服务器中的内存分配方式对于电子设备来说可能会影响到用户的使用体验。
在Linux操作系统中,系统为空闲内存量(free)划分了三个内存水位,分别为high、low和min,当应用向系统申请内存时,系统可以根据当前空闲内存量与三个内存水位之间的关系确定内存分配的方式。例如,当空闲内存量大于low时,则直接为应用分配内存;当空闲内存量大于min小于或等于low时,系统为应用分配内存的同时启动kswapd线程进行异步内存回收操作;当空闲内存量小于或等于min时,内存申请会被阻塞,系统再为应用分配内存之前,需要利用该应用申请内存的线程执行同步内存回收操作。
上述内存分配的技术方案中,系统并未对应用申请内存时,差异化内存分配方式,从而可能会影响到用户对电子设备的使用体验。
有鉴于此,本申请提供一种管理内存的方法,该技术方案可以根据线程的类型,差异化分配应用线程申请的内存,从而提升用户体验。
图3是本申请实施例提供的一种管理内存的方法的示意性框架图。如图3所示,该框架可以包括线程类型识别模块、内存分配模块和状态检测模块。
其中,线程类型识别模块可以是一个单独的模块,可以在线程申请内存时,用于识别该线程的类型,即识别该线程是属于目标线程还是其他线程。
应理解,这里的目标线程可以是电子设备的关键线程,例如,用户界面(userinterface,UI)线程即属于关键线程的一种。
其中,可以根据线程的使用场景、该线程的调度优先级等信息识别一个线程是否处于目标线程。
在一个示例中,在应用启动的场景下,若该线程对应的应用属于前台应用,且该线程为UI线程,由于UI线程对应的界面将直接呈现给用户,则该线程申请内存时,如果时延较高,则直接会影响到用户的体验,因此,该前台应用的UI线程属于目标线程。
在另一个示例中,也可以根据线程的调度优先级确定其是否属于目标线程,如,若该线程的调度优先级小于或等于100,则可以确定该线程属于目标线程。
可选地,该线程类型识别模块可以位于线程申请内存的接口中,当该线程通过该接口向系统申请内存时,可以通过该线程的调度优先级、是否是前台应用的UI线程等确定其是否属于目标线程。
内存分配模块可以根据申请内存的线程的类型,差异化处理不同类型线程的内存请求。
例如,对于目标线程,降低其对应的内存水位。对于其他线程,增加其对应的内存水位。
状态检测模块负责用于根据目标线程的内存申请状态进行一些参数的调节,以达到降低目标线程对应的内存水位的目的,从而可以使得目标线程能够更容易的分配到内存,以提升用户体验。
示例性地,当该状态检测模块监测到目标线程的直接回收次数增加时,可以适当降低其对应的内存水位,并增加其他线程对应的内存水位。
应理解,在其他的实施例中,本文中的线程也可以用进程进行代替,本申请实施例对此不予限定。
下文将结合具体实施例具体介绍该降低目标线程对应的水位、增加其他线程对应的内存水位的技术方案,此处暂不详述。
图4是本申请实施例提供的一种管理内存方法的示意性流程图。如图4所示,该方法可以应用于电子设备中,该方法可以包括步骤401至步骤409。
401,应用的线程请求内存。
在一个示例中,该电子设备可以为手机,用户在手机的桌面中点击应用程序的图标可以理解为启动了该应用的进程,则该进程中的UI线程需要向系统请求内存,当系统为该UI线程分配了内存之后,则该应用可以被启动,并可以将该应用的界面显示在手机的屏幕中。
在另一个示例中,当电子设备在当前应用的显示界面中点击第三方应用的链接或卡片时,也可以理解为启动了第三方应用的进程,则该进程需要向系统请求内存,当系统为该进程分配了内存之后,则该第三方应用可以被启动,手机的显示界面可以跳转至第三方的显示界面中。
402,识别线程是否是目标线程。
其中,可以根据线程的类型识别该线程是否是目标线程。
具体地,可以根据该线程的使用场景,或者该线程的调度优先级等信息确定该进程是否是目标进程。
在一个示例中,系统根据该线程的使用场景来确定该线程是否是目标线程。例如,在该线程向系统请求内存时,若该线程所属应用的appScore=0,则可以判断该应用属于前台应用,若该线程为UI线程,则可以确定该线程为目标线程,即前台应用的UI线程属于比较重要的线程,因为该线程的响应速度将影响电子设备的界面操作的响应速度,会直接影响到用户对电子设备的使用体验。
应理解,该线程所属应用的appScore是应用的属性值,当该应用的线程申请内存时,系统可以获取到该属性值。
还应理解,系统也可以根据线程的属性值判断一个线程是否为UI线程。
在另一个示例中,系统根据该线程的调度优先级确定该线程是否是目标线程。例如,系统可以根据线程的调度优先级的值与预设值之间的关系确定该线程是否是目标线程,当该线程的调度优先级的值小于或等于预设值时,则可以确定该线程是目标线程;当该线程的调度优先级的值大于预设值,则可以确定该线程不是目标线程,即该线程不属于重要线程。
应理解,该预设值可以是预先设定的,如100等,该预设值还可以为其他值,本申请实施例对此不予限定。
应理解,该调度优先级的属于该线程的属性值,当该线程申请内存时,系统可以获取到该属性值。
在一种可能的实现方式中,若该线程不属于目标线程,则可以执行步骤404。
在另一种可能的实现方式中,若该线程属于目标线程,则可以执行步骤403。
403,减小目标线程对应内存水位的第一预设阈值、第二预设阈值,其中,第一预设阈值小于第二预设阈值。
其中,对于目标线程,系统可以减小其对应内存水位的第一预设阈值和第二预设阈值。
例如,可以将该第一预设阈值与第二预设阈值分别除以数值K,K大于1,如,K=2。或者,将该第一预设阈值除以数值K1,K1大于1,将该第二预设阈值除以数值K2,K2大于1,在这种情况下,需要保证除以数值K1之后的第一预设阈值仍小于除以数值K2之后的第二预设阈值。
应理解,该第一预设阈值可以是预设的,如该第一预设阈值为20M,则可以根据一定的比值关系计算出第二预设阈值的大小,如该第二预设阈值为第一预设阈值的3倍,则该第二预设阈值可以为60M。或者,该第二预设阈值是预设的,并可以根据一定的比值关系计算出第一预设阈值的大小,本申请实施例对比值关系的具体取值不予限定。
应理解,该第一预设阈值可以理解为前文中的min水位,该第二预设阈值可以理解为前文中的low水位。
通过减少目标线程对应内存水位的第一预设阈值、第二预设阈值,系统在对内存空闲量与该第一预设阈值、第二预设阈值的关系进行判断时,可以减少对目标线程内存申请的限制,从而可以保证目标线程的内存分配更加容易,进而可以减少目标线程的内存分配响应时间,以提升用户体验。
404,增加其他线程对应内存水位的第一预设阈值、第二预设阈值。
应理解,该步骤404中的其他线程可以指系统中除目标线程之外的线程。
其中,对于其他线程来说,系统可以增加其对应内存水位的第一预设阈值和第二预设阈值。
例如,可以将该第一预设阈值与第二预设阈值分别乘以数值K,K大于1,如,K=2。或者,将该第一预设阈值乘以数值K1,K1大于1,将该第二预设阈值乘以数值K2,K2大于1,在这种情况下,需要保证乘以数值K1之后的第一预设阈值仍小于乘以数值K2之后的第二预设阈值。
405,空闲内存量是否大于第二预设阈值。
在一个示例中,对于目标线程来说,当系统判断空闲内存量大于减少了内存水位之后的第二预设阈值时,可以执行步骤406,即直接为该线程分配内存;当系统判断空闲内存量小于或等于减少了内存水位之后的第二预设阈值时,可以执行步骤407。
在另一个示例中,对于其他线程来说,当系统判断空闲内存量大于增加了内存水位之后的第二预设阈值时,可以执行步骤406,即直接为该线程分配内存,当系统判断空闲内存量小于或等于增加了内存水位之后的第二预设阈值时,可以执行步骤407
406,为线程分配内存。
其中,系统为线程分配内存,可以理解为系统响应线程的内存申请请求。
407,空闲内存量是否大于第一预设阈值。
在一个示例中,对于目标线程来说,当系统判断空闲内存量大于减少了内存水位之后的第一预设阈值时,可以执行步骤408,系统为线程分配内存,并异步进行内存回收;当系统判断空闲内存量小于或等于减少了内存水位之后的第一预设阈值时,可以执行步骤409。
在另一个示例中,对于其他线程来说,当系统判断空闲内存量大于增加了内存水位之后的第一预设阈值时,可以执行步骤408,系统为线程分配内存,并异步进行内存回收;当系统判断空闲内存量小于或等于减少了内存水位之后的第一预设阈值时,可以执行步骤409。
408,为线程分配内存,并进行内存回收。
该步骤中,系统在为线程分配内存的同时,唤醒kswapd线程异步进行内存回收。
该步骤中,系统空闲内存量大于第一预设阈值且小于或等于第二预设阈值,此时,系统内存空闲量可能会出现不足,则需要在为线程分配内存的同时唤醒kswapd线程执行内存回收的操作。
应理解,kswapd线程可以回收处于空闲状态的线程所占用的内存,直至将空闲内存量回收至第三预设阈值之上。
该第三预设阈值可以是前文中的high内存水位。该第三预设阈值可以根据第一预设阈值或第二预设阈值计算得到。
应理解,这里的异步指的是系统分配内存与kswapd线程进行内存回收是同时进行的。
409,内存申请请求阻塞,进行内存回收。
该步骤中,当系统空闲内存量小于或等于第一预设阈值时,可以理解为系统空闲内存量严重不足,则该线程的内存申请请求被阻塞,该线程在分配到内存之前需要先执行直接内存回收(direct reclaim,DR)操作。
示例性地,该线程在向系统请求内存时,系统的空闲内存量小于或等于第一预设阈值,则该线程需要先执行直接内存回收操作,并唤醒kswapd线程执行内存回收操作,直至将空闲内存量回收至大于第一预设阈值,则此时,系统为该线程分配内存,该kswapd线程会继续执行内存回收,直至将空闲内存量回收至大于第三预设阈值。
可选地,系统的状态监测模块可以监测预设时间内上述DR的次数,当DR的次数增加时,可以根据如下公式更新上述K的值。
K=K*max(1,lgΔDR) (1)
其中,ΔDR可以表示两次预设时间内DR的次数的差值的绝对值,max(1,lgΔDR)表示数值1和lgΔDR之间的较大值。
这样,当下一个监测周期的DR的次数比上一个监测周期的DR的次数增加时,表示目标线程向系统申请内存时被阻塞的次数增加,即目标线程的内存申请不能够被及时响应的次数增加,此时,可能会影响到用户的体验。因此,可以使用上述公式增加K的值,从而使得目标线程更容易申请到系统内存,减少其内存申请被阻塞的次数,从而提升用户体验。
在本申请的一个实施例中,可以在线程申请内存时,判断该线程的类型,当该线程属于目标线程时,降低其内存水位值,增加其他线程的内存水位值,以期减少目标线程内存申请被阻塞的次数,从而提升用户体验。
图5是本申请实施例提供的一种管理内存方法的示意性流程图。该方法可以应用于电子设备中,如图5所示,该方法可以包括步骤510至步骤540。
510,电子设备接收线程的内存分配请求。
示例性地,该电子设备可以为手机,用户在手机的桌面中点击应用程序的图标可以理解为启动了该应用的线程,则该线程需要向系统请求内存,当系统为该线程分配了内存之后,则该应用可以被启动,并可以将该应用的界面显示在手机的屏幕中。
520,响应于所述内存分配请求,所述电子设备识别所述线程的类型是否属于目标线程。
其中,电子设备响应于该内存分配请求,识别该线程是否属于目标线程。
在一种可能的实现方式中,所述电子设备识别所述线程的类型是否属于目标线程,包括:根据所述线程的第一属性确定所述线程所属的应用是否为前台应用;在确定所述线程所属的应用为前台应用的情况下,确定所述线程是否为UI线程;在确定所述线程为UI线程时,确定所述线程为所述目标线程。
其中,该第一属性可以是线程所属应用的appScore的值,若该appScore=0,则可以确定该应用为前台应用。
应理解,该目标线程为关键线程,因为前台应用的UI线程对应的显示界面将直接呈现给用户,系统对该UI线程的内存申请的响应速度将直接影响到电子设备的界面的操作时延,进而会影响到用户的体验。
在本申请的一个实施例中,在根据线程的第一属性确定该线程为前台应用的情况下,当该线程为UI线程时,则可以确定该线程为目标线程。
在另一种可能的实现方式中,所述电子设备识别所述线程的类型是否属于目标线程,包括:根据所述线程的调度优先级确定所述线程是否为所述目标线程。
在本申请的一个实施例中,当该调度优先级的值小于或等于预设值时,则可以确定该线程为目标线程;当该调度优先级的值大于预设值时,则可以确定该线程不是目标线程。
例如,该预设值为100。该预设值还可以为其他值,本申请实施例对此不予限定。
530,在确定线程属于所述目标线程时,所述电子设备降低目标线程对应的内存水位的第一预设阈值和第二预设阈值。
其中,该第一预设阈值可以是预先设定的,例如,设定一个初始值,然后可以根据一定的比例关系计算出第二预设阈值。或者,第二预设阈值时预先设定的,然后可以根据一定的比例关系计算出第一预设阈值。
示例性地,该第一预设阈值为20M,则可以根据一定的比值关系计算出第二预设阈值的大小,如该第二预设阈值为第一预设阈值的3倍,则该第二预设阈值可以为60M。
应理解,该第一预设阈值可以理解为前文中的min水位,该第二预设阈值可以理解为前文中的low水位。
在一种可能的实现方式中,所述电子设备降低所述目标线程对应的内存水位的第一预设阈值和第二预设阈值,包括:将所述第一预设阈值和所述第二预设阈值分别除以数值K,其中,K大于1。
在本申请的一个实施例中,可以将该第一预设阈值与第二预设阈值分别除以数值K,K大于1,如,K=2。或者,将该第一预设阈值除以数值K1,K1大于1,将该第二预设阈值除以数值K2,K2大于1,在这种情况下,需要保证除以数值K1之后的第一预设阈值仍小于除以数值K2之后的第二预设阈值。
通过减少目标线程对应内存水位的第一预设阈值、第二预设阈值,系统在对内存空闲量与该第一预设阈值、第二预设阈值的关系进行判断时,可以减少对目标线程内存申请的限制,从而可以保证目标线程的内存分配更加容易,进而可以减少目标线程的内存分配响应时间,以提升用户体验。
540,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为目标线程分配内存的策略。
在一个示例中,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略,包括:若所述空闲内存量大于所述降低后的第二预设阈值,则直接为所述线程分配内存。
在本申请的一个实施例中,当系统内存空间的空闲内存量大于降低后的第二预设阈值时,表示空闲内存较多,则可以直接为该目标线程分配内存。
在另一个示例中,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略,包括:若所述空闲内存量小于或等于降低后的第二预设阈值,且大于降低后的第一预设阈值,则为所述线程分配内存的同时,利用第一线程执行内存回收操作,以将所述空闲内存量增加至第三预设阈值,其中,所述第三预设阈值大于所述降低后的第二预设阈值。
应理解,该第一线程可以为kswapd线程。该第三预设阈值可以根据第一预设阈值或第二预设计算得到,或者,该第三预设阈值也可以是事先预设的,本申请实施例对此不予限定。
在本申请的一个实施例中,当系统空闲内存量小于或等于降低后的第二预设阈值,且大于降低后的第一预设阈值时,表示系统内存可能会不足,则系统可以在为目标线程分配内存的同时,唤醒第一线程执行异步内存回收的操作,直至将该空闲内存量增加至第三预设阈值。
在另一个示例中,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略,包括:若所述空闲内存量小于或等于降低后的第一预设阈值,则使用所述线程执行直接内存回收操作的同时,利用第一线程执行内存回收操作;在所述线程与所述第一线程执行内存回收操作的过程中,所述空闲内存量大于所述降低后的第一预设阈值时,为所述线程分配内存的同时,利用第一线程继续执行内存回收操作,以将所述空闲内存量增加至第三预设阈值,其中,所述第三预设阈值大于所述降低后的第二预设阈值。
在本申请的一个实施例中,当系统的空闲内存量小于或等于降低后的第一预设阈值,则意味着系统的空闲内存量严重不足,则此时,线程的内存申请请求会被阻塞,系统会利用该线程执行内存回收操作,并唤醒第一线程执行内存回收操作,当空闲内存量增加至大于降低后的第一预设阈值时,系统会为该线程分配内存,该第一线程会继续进行内存回收操作,直至将空闲内存量增加至第三预设阈值。
这样,在线程向系统申请内存时,电子设备可以识别该线程的类型,若该线程属于目标线程,则降低目标线程对应的内存水位的第一预设阈值和第二预设阈值,并根据系统的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为线程分配内存的策略。从而可以降低目标线程在内存申请时的限制,以期提升用户体验。
可选地,所述方法还包括:在确定所述线程不属于所述目标线程时,所述电子设备增加所述线程对应的内存水位的第一预设阈值和第二预设阈值。
在本申请的一个实施例中,当一个线程不属于目标线程时,说明该线程不是特别关键的线程,则可以增加其对应的内存水位的第一预设阈值和第二预设阈值,从而可以将内存资源向关键线程(目标线程)倾斜,从而有利于保证关键线程的内存申请被及时响应。
可选地,所述电子设备增加所述线程对应的内存水位的第一预设阈值和第二预设阈值,包括:将所述第一预设阈值和所述第二预设阈值分别乘以数值K,其中,K大于1。
可选地,所述方法还包括:所述电子设备在预设时间内监测所述目标线程执行直接内存回收操作的次数;若预设时间内所述目标线程执行直接内存回收操作的次数大于前一个预设时间内所述目标线程执行直接内存回收操作的次数,则利用如下公式更新数值K,
K=K*max(1,lgΔDR)
其中,ΔDR表示预设时间内所述目标线程执行直接内存回收操作的次数与前一个预设时间内所述目标线程执行直接内存回收操作的次数的差,max(1,lgΔDR)表示数值1和lgΔDR之间的较大值。
这样,当一个监测周期的DR的次数比前一个监测周期的DR的次数增加时,表示目标线程向系统申请内存时被阻塞的次数增加,即目标线程的内存申请不能够被及时响应的次数增加,此时,可能会影响到用户的体验。因此,可以使用上述公式增加K的值,从而使得目标线程更容易申请到系统内存,减少其内存申请被阻塞的次数,从而提升用户体验。
应理解,本申请实施例中的线程也可以是用进程进行代替,本申请不予限定。
图6是本申请实施例提供的电子设备的示意性结构图。如图6所示,该电子设备600可以包括一个或多个存储器610、一个或多个处理器620。
其中,该一个或多个存储器610中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被一个或多个处理器620执行时,使得上述步骤401至步骤409,或步骤510至步骤540中的管理内存的方法被执行。
本申请实施例还提供一种芯片,所述芯片包括处理器和通信接口,所述通信接口用于接收信号,并将所述信号传输至所述处理器,所述处理器处理所述信号,使得如前文中任一种可能的实现方式中所述的管理内存的方法被执行。
本实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的管理内存的方法。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的管理内存的方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的管理内存的方法。
其中,本实施例提供的电子设备、计算机可读存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种管理内存的方法,其特征在于,所述方法应用于电子设备,所述方法包括:
所述电子设备接收线程的内存分配请求;
响应于所述内存分配请求,所述电子设备识别所述线程的类型是否属于目标线程;
在确定所述线程属于所述目标线程时,所述电子设备降低所述目标线程对应的内存水位的第一预设阈值和第二预设阈值,其中,所述第一预设阈值小于所述第二预设阈值;
所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略。
2.根据权利要求1所述的方法,其特征在于,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略,包括:
若所述空闲内存量大于所述降低后的第二预设阈值,则直接为所述线程分配内存。
3.根据权利要求1所述的方法,其特征在于,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略,包括:
若所述空闲内存量小于或等于降低后的第二预设阈值,且大于降低后的第一预设阈值,则为所述线程分配内存的同时,利用第一线程执行内存回收操作,以将所述空闲内存量增加至第三预设阈值,其中,所述第三预设阈值大于所述降低后的第二预设阈值。
4.根据权利要求1所述的方法,其特征在于,所述电子设备根据内存空间中的空闲内存量与降低后的第一预设阈值和第二预设阈值之间的关系,确定为所述目标线程分配内存的策略,包括:
若所述空闲内存量小于或等于降低后的第一预设阈值,则使用所述线程执行直接内存回收操作的同时,利用第一线程执行内存回收操作;
在所述线程与所述第一线程执行内存回收操作的过程中,所述空闲内存量大于所述降低后的第一预设阈值时,为所述线程分配内存的同时,所述第一进程继续执行内存回收操作,以将所述空闲内存量增加至第三预设阈值,其中,所述第三预设阈值大于所述降低后的第二预设阈值。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述电子设备识别所述进程的类型是否属于目标线程,包括:
根据所述线程的第一属性确定所述线程所属的应用是否为前台应用;
在确定所述线程所属的应用为前台应用的情况下,确定所述线程是否为UI进程;
在确定所述线程为UI线程时,确定所述线程为所述目标线程。
6.根据权利要求1-4中任一项所述的方法,其特征在于,所述电子设备识别所述进程的类型是否属于目标线程,包括:
根据所述线程的调度优先级确定所述线程是否为所述目标线程。
7.根据权利要求1-6中任一项所述的方法,其特征在于,所述电子设备降低所述目标线程对应的内存水位的第一预设阈值和第二预设阈值,包括:
将所述第一预设阈值和所述第二预设阈值分别除以数值K,其中,K大于1。
8.根据权利要求1-4中任一项所述的方法,其特征在于,所述方法还包括:
在确定所述线程不属于所述目标线程时,所述电子设备增加所述线程对应的内存水位的第一预设阈值和第二预设阈值。
9.根据权利要求8所述的方法,其特征在于,所述电子设备增加所述线程对应的内存水位的第一预设阈值和第二预设阈值,包括:
将所述第一预设阈值和所述第二预设阈值分别乘以数值K,其中,K大于1。
10.根据权利要求7-9中任一项所述的方法,其特征在于,所述方法还包括:
所述电子设备在预设时间内监测所述目标线程执行直接内存回收操作的次数;
若预设时间内所述目标线程执行直接内存回收操作的次数大于前一个预设时间内所述目标线程执行直接内存回收操作的次数,则利用如下公式更新数值K,
K=K*max(1,lgΔDR)
其中,ΔDR表示预设时间内所述目标线程执行直接内存回收操作的次数与前一个预设时间内所述目标线程执行直接内存回收操作的次数的差。
11.一种电子设备,其特征在于,包括一个或多个处理器;一个或多个存储器;所述一个或多个存储器存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述指令被一个或多个处理器执行时,使得如权利要求1-10中任一项所述的管理内存的方法被执行。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机上运行时,使得如权利要求1-10中任一项所述的管理内存的方法被执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111060032.7A CN115794361A (zh) | 2021-09-10 | 2021-09-10 | 管理内存的方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111060032.7A CN115794361A (zh) | 2021-09-10 | 2021-09-10 | 管理内存的方法和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794361A true CN115794361A (zh) | 2023-03-14 |
Family
ID=85473264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111060032.7A Pending CN115794361A (zh) | 2021-09-10 | 2021-09-10 | 管理内存的方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794361A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116361012A (zh) * | 2023-06-01 | 2023-06-30 | 荣耀终端有限公司 | 一种内存页分配方法及电子设备 |
-
2021
- 2021-09-10 CN CN202111060032.7A patent/CN115794361A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116361012A (zh) * | 2023-06-01 | 2023-06-30 | 荣耀终端有限公司 | 一种内存页分配方法及电子设备 |
CN116361012B (zh) * | 2023-06-01 | 2023-10-24 | 荣耀终端有限公司 | 一种内存页分配方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021083378A1 (zh) | 一种加速应用程序启动的方法及电子设备 | |
KR102148948B1 (ko) | 전자 장치의 멀티 태스킹 방법 및 그 전자 장치 | |
CN113434288B (zh) | 内存管理的方法及电子设备 | |
CN111555825B (zh) | 射频资源分配方法及装置 | |
WO2022199509A1 (zh) | 应用执行绘制操作的方法及电子设备 | |
CN114579954B (zh) | 安全启动校验的方法及电子设备 | |
CN111882642B (zh) | 三维模型的纹理填充方法及装置 | |
WO2023202429A1 (zh) | 垃圾回收的方法及电子设备 | |
CN111381996B (zh) | 内存异常处理方法及装置 | |
CN114610419B (zh) | 添加widget的方法、装置及计算机可读存储介质 | |
CN115794361A (zh) | 管理内存的方法和电子设备 | |
CN114461589B (zh) | 读取压缩文件的方法、文件系统及电子设备 | |
WO2021238376A1 (zh) | 功能包的加载方法、装置、服务器和电子设备 | |
CN112783418B (zh) | 一种存储应用程序数据的方法及移动终端 | |
CN115655310A (zh) | 数据的校准方法、电子设备及可读存储介质 | |
CN111581119B (zh) | 页面回收方法及装置 | |
CN115206308A (zh) | 一种人机交互的方法及电子设备 | |
CN116736999B (zh) | 电子设备的控制方法和电子设备 | |
CN116185245B (zh) | 一种页面显示方法及电子设备 | |
CN116688494B (zh) | 生成游戏预测帧的方法和电子设备 | |
CN116672707B (zh) | 生成游戏预测帧的方法和电子设备 | |
CN116627855B (zh) | 内存处理方法及相关装置 | |
WO2023280141A1 (zh) | 刷新用户界面的方法和电子设备 | |
CN117116258A (zh) | 一种语音唤醒方法及电子设备 | |
CN116719556A (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 |