CN115525404B - 释放内存的方法、设备和存储介质 - Google Patents
释放内存的方法、设备和存储介质 Download PDFInfo
- Publication number
- CN115525404B CN115525404B CN202210161930.XA CN202210161930A CN115525404B CN 115525404 B CN115525404 B CN 115525404B CN 202210161930 A CN202210161930 A CN 202210161930A CN 115525404 B CN115525404 B CN 115525404B
- Authority
- CN
- China
- Prior art keywords
- application
- memory
- frozen
- foreground
- notification
- 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
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- 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)
- Power Sources (AREA)
- Telephone Function (AREA)
Abstract
本申请实施例提供一种释放内存的方法、设备和存储介质,方法包括:应用放后台时,将应用对应的进程确定为待冻结进程;通过强制回收的方式释放待冻结进程占用的内存;冻结待冻结进程。在进程被冻结前,本方案通过主动触发待冻结进程按强制回收的方式释放内存,增加了待冻结进程所能释放的内存资源,从而缓解后台应用的进程占用电子设备过多内存资源的问题。
Description
技术领域
本申请涉及内存管理技术领域,尤其涉及一种释放内存的方法、设备和存储介质。
背景技术
电子设备中,应用的每个进程都包含一个内存分配器,进程通过内存分配器从操作***(Operating System,OS)获取运行所需的内存(又称随机存取存储器,RandomAccess Memory,RAM)。当应用切换到后台运行时,对应的进程通过内存分配器将内存释放给OS。释放内存时,有些内存分配器仅释放一部分获取到的内存,剩余的另一部分内存仍由内存分配器持有。
上述情况导致后台应用的进程占用电子设备过多的内存,进而对其他进程的运行造成不良影响。
发明内容
本申请提供了一种释放内存的方法、设备和存储介质,以避免后台应用的进程占用过多内存。
为了实现上述目的,本申请提供了以下技术方案:
本申请第一方面提供一种释放内存的方法,包括:
应用放后台时,将所述应用对应的进程确定为待冻结进程;
通过强制回收的方式释放所述待冻结进程占用的内存;
冻结所述待冻结进程。
本实施例的有益效果在于:
在应用被放后台后,主动触发放后台的应用对应的待冻结进程按强制回收的方式释放内存,可以使待冻结进程所占用的内存尽可能多地被释放给操作***,缓解了后台应用的进程占用过多内存资源的问题,提高电子设备前台的应用运行的流畅度。
在一些可选的实施例中,所述应用放后台时,将所述应用对应的进程确定为待冻结进程之前,还包括:
响应用户操作,将当前在前台运行的应用放后台。
上述用户操作可以是返回桌面,打开其他应用等操作。
示例性的,当视频应用在前台运行时,电子设备响应用户对显示屏顶部弹出的聊天消息的点击操作,打开聊天应用,同时将当前在前台运行的视频应用放后台
在一些可选的实施例中,所述应用放后台时,将所述应用对应的进程确定为待冻结进程之前,还包括:
在所述电子设备熄屏时,将当前在前台运行的应用放后台。
本实施例的有益效果在于:
在熄屏后将前台运行的应用切换到后台,可以降低电子设备的耗电量。
在一些可选的实施例中,所述应用放后台时,将所述应用对应的进程确定为待冻结进程之前,还包括:
判断所述应用是否有前台可感知功能;
若所述应用没有前台可感知功能,执行所述将所述应用对应的进程确定为待冻结进程步骤。
本实施例的有益效果在于:
避免将有前台可感知功能的应用冻结,使电子设备能够在运行前台应用的同时提供后台运行的应用的部分功能。
示例性的,导航应用播报导航信息的功能就属于前台可感知功能,通过本实施例的方法,可以避免将后台的导航应用冻结,使电子设备可以一边运行其他应用一边播报导航信息。
在一些可选的实施例中,所述判断所述应用是否有前台可感知功能,包括:
根据前台可感知应用列表判断所述应用是否有前台可感知功能,所述前台可感知应用列表用于记录具有前台可感知功能的应用。
在一些可选的实施例中,所述电子设备的操作***包括省电应用和内存管理服务;所述待冻结进程包括函数库和内存分配器;
所述通过强制回收的方式释放所述待冻结进程占用的内存,包括:
所述省电应用向所述内存管理服务发送预冻结通知,所述预冻结通知携带所述待冻结进程的进程标识;
所述内存管理服务根据所述待冻结进程的进程标识,向所述待冻结进程的函数库发送内存释放信号;
所述函数库响应所述内存释放信号,调用所述内存分配器的强制释放接口;
所述内存分配器按强制回收方式释放所述待冻结进程占用的内存。
在一些可选的实施例中,所述电子设备的操作***还包括冻结器;
所述冻结待冻结进程,包括:
所述省电应用向所述冻结器下发进程冻结通知,所述进程冻结通知携带所述待冻结进程的进程标识;
所述冻结器根据所述待冻结进程的进程标识,冻结所述待冻结进程。
在一些可选的实施例中,所述省电应用向所述冻结器下发进程冻结通知,包括:
所述省电应用获得所述内存分配器上报的内存释放完毕的通知后,向所述冻结器下发进程冻结通知。
本实施例的有益效果在于:
省电应用在收到内存释放完毕的通知后再冻结进程,可以确保待冻结进程在内存分配器尽可能地释放完内存之后才被冻结,从而避免被冻结的进程占用电子设备的内存资源。
在一些可选的实施例中,所述省电应用向所述冻结器下发进程冻结通知,包括:
所述省电应用在发送所述预冻结通知且经过预设的等待时间后,向所述冻结器下发进程冻结通知。
本申请第二方面提供一种电子设备,包括存储器和一个或多个处理器;
所述存储器用于存储计算机程序。
所述一个或多个处理器用于执行所述计算机程序,具体用于实现本申请第一方面任意一项所提供的释放内存的方法。
本申请第三方面提供一种计算机存储介质,用于存储计算机程序,所述计算机程序被执行时,具体用于实现本申请第一方面任意一项所提供的释放内存的方法。
本申请实施例提供一种释放内存的方法、设备和存储介质,方法包括:应用放后台时,将应用对应的进程确定为待冻结进程;通过强制回收的方式释放待冻结进程占用的内存;冻结待冻结进程。在进程被冻结前,本方案通过主动触发待冻结进程按强制回收的方式释放内存,增加了待冻结进程所能释放的内存资源,从而缓解后台应用的进程占用电子设备过多内存资源的问题。
附图说明
图1为本申请实施例提供的一种电子设备的结构示意图;
图2为本申请实施例提供的一种电子设备的用户界面示意图;
图3为本申请实施例提供的另一种电子设备的用户界面示意图;
图4为本申请实施例提供的一种软件架构的示意图;
图5为本申请实施例提供的一种释放内存的方法的时序图;
图6为本申请实施例提供的另一种释放内存的方法的时序图;
图7为本申请实施例提供的一种释放内存的方法的流程图;
图8为本申请实施例提供的另一种释放内存的方法的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请实施例中,“一个或多个”是指一个、两个或两个以上;“和/或”,描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
为了下述各实施例的描述清楚简洁,首先对本申请涉及的相关技术术语或技术进行简要介绍:
内存分配器。在分层架构的***中,内核层和Native层均有自己的内存分配器,其中Native层的内存分配器又可以称为用户态内存分配器。***中的进程可以通过malloc或者new函数来调用用户态内存分配器,从而申请内存资源。常见的用户态内存分配器有Scudo,Jemalloc等。为了便于区分,下文统一将用户态内存分配器简称为内存分配器,将内核层的内存分配器记为内存管理模块。
用户态内存分配器通常可以通过日常回收或强制回收的方式释放申请到的内存资源。
日常回收(lazy garbage collection,lazyGC),一种内存分配器释放内存的方式。当内存分配器按日常回收的方式释放内存时,基于性能考虑,内存分配器并不会把进程占用的所有空闲内存全部返还给操作***,而是设置了一定的回收阈值,超过回收阈值的内存释放给操作***,回收阈值内的内存仍由内存分配器持有。当进程调用free函数释放内存时,该进程的内存分配器可以按日常回收的方式释放内存资源。
强制回收(Force garbage collection,ForceGC),另一种内存分配器释放内存的方式。内存分配器一般配置有强制释放接口,当强制释放接口被调用时,内存分配器按强制回收的方式释放内存。按强制回收方式释放内存时,不设置回收阈值,内存分配器将进程占有的空闲内存尽可能地释放给操作***。也就是说,与日常回收的方式相比,内存分配器通过强制回收的方式通常可以释放更多的内存资源。
内存压缩。一种***内核回收内存的方式。安卓***通常基于zram swap技术实现内存压缩。zram swap技术的基本原理是,预先在电子设备的内存中划分一块区域作为swap分区,当可分配的内存资源较少时,内核将被占用的内存中的数据压缩,然后把压缩后的数据存放在内存的swap分区中。例如,***内核将50MB被占用的内存空间中的数据压缩,如果压缩率是0.4,则压缩后的数据只需占用20MB的内存,即通过内存压缩,内核回收了30MB可分配的内存空间。
应用本申请提供的释放内存的方法电子设备可以是手机、平板电脑、手持计算机、上网本、个人数字助理(Personal Digital Assistant,PDA)、可穿戴电子设备等设备,本申请对应用内存回收方法的电子设备的具体形式不做特殊限制。
请参见图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,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),通信处理器(communication processor,CP,也可以称为调制解调器),图形处理器(graphics processing unit,GPU)等。内部存储器121又可以称为随机存取存储器(Random Access Memory,RAM),简称内存,处理器可以直接和RAM交换数据。RAM可以被随时读写,并且具有很高的读写速度,因此通常作为操作***或其他正在运行中的程序的临时数据存储介质。
外部存储器120,一般为采用非易失性存储介质的存储器,例如,至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
非易失性存储器130可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像、视频播放功能等)等。存储数据区可存储电子设备使用过程中所创建的数据(比如音频数据,照片、视频等)等。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,LCD),有机发光二极管(organic light-emittingdiode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode的,AMOLED),柔性发光二极管(flex light-emittingdiode,FLED),Miniled,MicroLed,Micro-oled,量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100的显示屏194上可以显示一系列图形用户界面(graphical userinterface,GUI),这些GUI都是该电子设备100的主屏幕。一般来说,电子设备100的显示屏194的尺寸是固定的,只能在该电子设备100的显示屏194中显示有限的控件。控件是一种GUI元素,它是一种软件组件,包含在应用程序中,控制着该应用程序处理的所有数据以及关于这些数据的交互操作,用户可以通过直接操作(direct manipulation)来与控件交互,从而对应用程序的有关信息进行读取或者编辑。一般而言,控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、Widget等可视的界面元素。
例如,在本申请实施例中,当一个应用在前台运行时,电子设备100的显示屏可以显示该应用的图形用户界面,当前台运行的应用被切换到后台时,显示屏则不显示该应用的图形用户界面。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
本申请实施例中,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D既可以被前台运行的应用占用,也可以被后台运行的应用占用。
例如,用户启动音乐应用后,音乐应用在前台运行,利用电子设备100的音频模块170和扬声器170A(或耳机接口170D)播放音乐。当用户退出音乐应用,打开聊天应用时,音乐应用进入后台运行,后台运行的音乐应用仍然可以占用电子设备100的音频模块170和扬声器170A(或耳机接口170D)播放音乐。
用户使用上述电子设备的过程中,可能会打开多个应用,这种情况下,电子设备在前台模式下运行最近一次打开的应用,并将之前打开的应用切换到后台。处于前台模式的应用程序占用电子设备的显示装置(如触摸屏)和输入装置,可以与用户进行交互。
切换到后台的应用可能处于后台运行或者冻结状态。
后台运行是指应用程序处于后台模式,不占用电子设备的显示装置和输入装置,不能与用户进行交互,处于后台运行的应用程序也会占用一定的***资源,如,内存资源、CPU资源。
冻结状态是指某应用程序被***冻结,冻结状态的应用程序停止运行,不占用CPU资源,不占用(或占用极少的)内存资源,冻结状态的应用程序再次切换到前台运行时,可以恢复到之前的状态继续运行。
在实际场景中,若切换到后台的应用有前台可感知的功能,例如导航应用切换到后台时继续通过语音播报导航信息,音乐应用切换到后台时继续播放音乐,则电子设备以后台模式继续运行该应用。
若切换到后台的应用没有前台可感知的功能,则电子设备冻结该应用对应的每个进程,对应的进程均被冻结后,应用即进入冻结状态。
示例性的,用户打开视频应用时,视频应用进入前台运行,此时,电子设备的显示屏被视频应用占用,显示屏上显示如图2所示的视频应用的界面,电子设备通过视频应用在显示屏上播放视频。
用户从视频应用退出并打开聊天应用时,例如图2中用户点击显示屏顶端弹出的聊天应用的消息时,聊天应用进入前台运行,视频应用则被切换到后台。相应的,电子设备的显示屏被聊天应用占用,显示屏上显示如图3所示的聊天应用的界面,切换到后台的视频应用则不再占用显示屏。
处于后台模式的视频应用不具有前台可感知的功能,因而电子设备将后台的视频应用冻结。当用户重启冻结状态的视频应用时,视频应用可以恢复到之前退出时的视频播放进度继续播放视频。
由于电子设备的内存资源有限,操作***会主动回收被冻结的进程的内存资源,以供其他运行中的进程使用。
相关技术中,由于被冻结的进程不会主动调用强制释放接口,操作***一般只能够从被冻结的进程收回该进程申请的一部分的内存资源,另一部分的内存资源则被该进程的内存分配器保留,这部分内存资源相当于仍由被冻结的进程占用,因此无法***作***分配给其他运行中的进程。
作为一个示例,视频应用在前台运行时,视频应用对应的进程A通过内存分配器申请了10MB内存,视频应用被切换到后台时,进程A被冻结,操作***从进程A回收内存。
回收内存时,进程A不会主动调用强制释放接口,所以内存分配器不会按强制回收的方式释放内存,导致之前申请的一部分内存(例如5MB内存)被进程A的内存分配器保留,只有一部分内存被释放给操作***。
可见,若进程被冻结前不通过强制回收的方式释放内存,则被冻结的进程占有的内存资源会过多,在用户打开多个应用时,电子设备中可分配的内存资源过少,进而引起前台运行的应用无法流畅运行等问题。
本申请提供的释放内存的方法可以适用于任意一种内存分配器,本实施例对内存分配器的具体种类不做限定。示例性的,本申请所述的内存分配器可以是Jemalloc或Scudo。
为了解决上述问题,本申请提供了一种释放内存的方法,通过实施本申请的方法,电子设备可以在冻结进程之前,调用内存分配器的强制释放接口,使内存分配器按强制回收方式释放待冻结进程所占用的内存,从而大幅减少被冻结的进程占用的内存资源,保障其他处于运行状态的进程正常工作。
本申请所提供的释放内存的方法,可以适用于基于Android操作***的电子设备。下面以Android***为例,说明适用本申请的电子设备的软件架构。
请参见图4,为本申请实施例提供的一种电子设备的软件架构示意图。
本实施例中,电子设备的软件***采用分层架构,具体分为应用层,应用框架层,***库(又称Native层)和内核层。
图4中仅示出了与本申请实施例相关的部分层和部分组件,实际应用中,还可以包括图4中未示出的层级和组件。当然,也可以仅包含图4所示的组件中的部分组件。
应用层包括多种应用程序,例如在本实施例中,应用层包括手机管家201,聊天,视频和导航应用。其中手机管家应用包括省电应用组件202。省电应用是基于Android***的电子设备中常见的一款节电软件,在实际应用中,省电应用可以基于用户操作而开启节电模式,便捷控制一些耗电的硬件和设置项,还可以发现并提示后台耗电量较大的应用和服务,通过以上措施,省电应用能够减少电子设备的耗电量,延长电子设备的待机时间。
在本实施例中,省电应用还可以发现从前台被切换到后台的应用,并在发现被切换到后台的应用时,向内核层下发进程冻结通知,从而冻结切换到后台的应用对应的进程。
在一些可选的实施例中,也可以由其他应用的其他组件发现切换到后台的应用并下发进程冻结通知,本实施例对具体实现这一功能的应用不做限定,上述省电应用组件仅作为一个示例。
应用框架层包括内存管理服务203,以及通知管理器,内容提供其,窗口管理器,资源管理器,电话管理器和视图***等模块。内存管理服务用于管控调度电子设备的内存资源,内存管理服务可以和应用框架层的其他调度电子设备硬件资源的服务集成为一个组件,也可以作为应用框架层的一个独立的组件。
在本实施例中,内存管理服务可以通过向待冻结进程发送信号的方式,触发待冻结进程的内存分配器执行强制回收。
***库可以包括多个功能模块,如表面管理器,三维图形处理器库,二维图形引擎和媒体库等。本实施例中,***库可以包括至少一个函数库和至少一个内存分配器。电子设备上运行的每一个进程,都在***库中有对应的函数库和内存分配器。例如,图4中电子设备运行有待冻结进程A(204)和待冻结进程B(205),其中待冻结进程A包含一个函数库和一个内存分配器,待冻结进程B也包含一个函数库和一个内存分配器。
在一些可选的实施例中,上述函数库可以是libc。
函数库包括预先配置的若干个函数,当函数库中的函数被调用时,函数库可以实现该函数对应的功能。例如,当函数库收到一个信号时,函数库中该信号对应的内存释放信号处理函数被进程调用,于是函数库实现该内存释放信号处理函数对应的功能。
一个进程的内存分配器,用于向内核层的内存管理模块申请该进程运行所需的内存资源,以及用于在合适的时机释放该进程占用的内存资源,例如,当进程调用释放内存的函数,如free函数时,内存分配器释放内存资源。
内存管理模块一般将电子设备的内存划分为多个内存页(即多个page),并按页管理内存。当进程跳过内存分配器直接向内存管理模块申请内存资源时,内存管理模块只能以页为单位给进程分配内存资源,但一个进程运行时单次申请的内存大小大多数情况下小于一个内存页,这就造成内存资源的浪费。而通过内存分配器申请内存资源,则可以根据进程的实际需求,申请到小于一个内存页的内存资源,从而提高内存资源的利用率,避免浪费内存资源。
内核层包括***层安全机制、内存管理、文件***、进程管理、网络堆栈及一系列驱动模块,是硬件和软件之间的层,提供与硬件的交互。
在本实施例中,如图4所示,内核层包括冻结器206(freezer)和内存管理模块207(Memory Manager,MM)。其中,冻结器响应省电应用下发的进程冻结通知,将对应的进程冻结,内存管理模块用于管理电子设备的内存资源,具体的,内存管理模块提供了获取内存和释放内存的接口,各个进程的内存分配器通过调用获取内存的接口申请所需的内存资源,通过调用释放内存的接口释放被进程占用的内存资源。
为了对上述架构图有更清晰的理解,请参见图5,为基于图4所示的软件架构实现的释放内存的方法的时序图。
首先,为实现本申请所提供的方法,函数库中需要预先配置内存释放信号量和内存释放信号处理函数,操作***可以在电子设备开机时将内存释放信号量和内存释放信号处理函数加载到函数库中。
其中,内存释放信号处理函数包含触发内存分配器执行强制回收的代码,当函数库的内存释放信号处理函数被调用时,函数库触发内存分配器执行强制回收。
信号量,可以理解为特定的信号和该信号所指示的操作的对应关系。本实施例中,内存释放信号用于指示函数库触发内存分配器执行强制回收,而触发内存分配器执行强制回收这一操作由前述内存释放信号处理函数实现,因此内存释放信号量可以为内存释放信号和前述内存释放信号处理函数之间的对应关系。
也就是说,基于函数库中配置好的内存释放信号量和内存释放信号处理函数,进程收到内存释放信号后,根据内存释放信号量可以确定需要调用内存释放信号处理函数,然后进程调用函数库中内存释放信号处理函数,随后函数库可以触发内存分配器执行强制回收。
S01,应用从前台切换到后台。
在一些可选的实施例中,应用在前台运行时,响应于用户的放后台操作,执行步骤S01,从前台切换到后台。
在另一些可选的实施例中,不需要用户执行放后台操作,***也可以主动触发应用放后台。例如,当用户一段时间未操作手机(比如2分钟未操作手机)时,手机会自动熄屏,当手机熄屏时,手机可以主动触发当前的应用从前台切换到后台。
上述应用可以是电子设备安装的任意一个应用。作为示例,上述应用可以是图5所示的视频应用,导航应用或聊天应用。
放后台操作,包括用户执行的任意一种会导致当前在前台运行的应用被切换到后台的操作。在一些示例中,放后台操作可以是从当前在前台运行的应用返回桌面的操作,也可以是从当前在前台运行的应用切换到另一个应用的操作。
作为一个示例,用户打开电子设备的视频应用后,电子设备在前台运行视频应用,用户在视频应用中观看视频,一段时间后,用户通过手势操作或者按键操作,从视频应用返回到桌面,此时视频应用就会执行步骤S01,从前台切换到后台,返回桌面时用户所执行的手势操作或按键操作即放后台操作。
作为另一个示例,请参见图2,电子设备在前台运行视频应用时,在后台模式下运行的聊天应用收到服务器下发的一条聊天消息,于是电子设备的显示屏顶部弹出这条聊天消息,用户点击显示屏顶部弹出的消息。电子设备响应用户的点击操作,从视频应用退出并打开聊天应用,后台运行的聊天应用被切换到前台运行,显示屏显示如图3所示的聊天应用的界面,同时,视频应用执行步骤S01,从前台切换到后台。此时用户点击显示屏顶部的聊天消息的操作即放后台操作。
S02,应用通知应用放后台。
应用执行步骤S01后,向省电应用执行步骤S02,即向省电应用通知对应的应用被放后台。
续接图2的示例,当用户点击聊天应用的消息后,视频应用被放后台,然后视频应用执行步骤S02,从而向省电应用通知,视频应用被切换到后台。
应用可以通过多种方式将应用放后台这一信息通知给省电应用,本实施例对具体的通知方式不做限定。
在一些可选的实施例中,应用可以主动将切换到后台的通知消息推送给省电应用,该通知消息可以携带应用的应用标识,例如携带应用的名称,省电应用收到通知消息后就可以确定应用被切到后台。或者,省电应用可以预先订阅各个应用切换到后台的事件,当应用发生从前台切换到后台的事件时,省电应用就可以通过事件订阅机制发现该应用切到后台。
S03,省电应用判断应用是否有前台可感知功能。
在发现一个应用切到后台后,省电应用执行步骤S03,判断应用是否有前台可感知功能。若应用没有前台可感知功能,则执行步骤S04,若应用有前台可感知功能,则不能冻结该应用,而需要在后台模式下继续运行该应用,相应的也不能释放该应用对应的进程所占用的内存,因此本方法结束。
在一些可选的实施例中,当一个应用被放后台时,电子设备可以直接冻结该应用对应的进程,而不论该应用是否有前台可感知的功能,这种场景下,可以不执行步骤S03。也就是说,步骤S03为可选的步骤。
示例性的,当电子设备的省电模式被开启时,此时,电子设备可以禁止应用在后台运行,不论应用是否有前台可感知功能,应用被放后台时电子设备都可以直接冻结该应用对应的进程,从而降低耗电量。
电子设备在从应用市场安装应用时,可以从应用市场获得安装的应用的类别,例如聊天类,导航类,购物类,游戏类等,其中部分类别的应用具有前台可感知功能,其他类别的应用则不具有前台可感知功能。例如,音乐类,导航类和聊天类应用具有前台可感知功能,购物类和游戏类应用则不具有前台可感知功能。
因此,省电应用可以维护一个前台可感知应用列表,当电子设备安装新应用时,省电应用从应用市场获得新安装的应用的类别,根据类别在前台可感知应用列表将这个应用标记为具有前台可感知功能,或者不具有前台可感知功能。这样,在步骤S03中省电应用就可以从前台可感知应用列表查询当前切换到后台的应用是否具有前台可感知功能。
进一步的,电子设备可以基于用户的配置而禁止一部分应用在后台运行,以降低电子设备的耗电量。当一个应用被禁止在后台运行时,省电应用可以在上述前台可感知应用列表中将这个应用标记为不具有前台可感知功能,这样在该应用被放到后台时,省电应用就可以按下述流程冻结该应用。
续接图2的示例,视频应用放后台后,电子设备在前台可感知应用列表中查询视频应用是否有前台可感知功能,查询后确定视频应用不具有前台可感知功能,于是电子设备执行步骤S04。
需要说明,以上仅为省电应用判断应用是否有前台可感知功能的一种示例性的实现方式,在本申请其他实施例中,省电应用也可以通过其他方式判断应用是否有前台可感知功能,例如,应用可以主动通知省电应用自身是否具有前台可感知功能。本实施例对具体的判断方式不做限定。
S04,省电应用确定待冻结进程。
判断出切换到后台的应用不具有前台可感知功能后,省电应用就需要冻结该应用对应的进程,因此,省电应用执行步骤S04,确定待冻结进程。
一个运行中的应用可以对应有一个或多个进程,S04所述的待冻结进程,包括当前被放后台的应用所对应的每一个进程。以图4为例,一个应用对应有进程A和进程B,该应用被放后台时,确定出的待冻结进程就包括待冻结进程A和待冻结进程B。
也就是说,在S04中,省电应用根据被放后台的应用的应用标识,找到该应用运行时对应的每一个进程,将这些进程确定为待冻结进程。
省电应用可以采用多种方式查找到放后台的应用对应的进程,本实施例对具体的查找方式不做限定。
示例性的,省电应用可以将放后台的应用的应用标识发送给内核层的进程管理模块,进程管理模块基于应用标识找到该应用对应的每个进程后,将这些进程的进程标识(可以是进程名,或者进程编号)发送给省电应用,由此,省电应用就可以确定这些进程标识对应的进程为待冻结进程。
续接图2的示例,省电应用确定视频应用被放后台后,将视频应用的应用标识发送至内核层,从而获得内核层反馈的视频应用对应的进程的进程标识,并确定视频应用对应的进程为待冻结进程。
S05,省电应用发送预冻结通知。
确定待冻结进程后,省电应用对内存管理服务执行步骤S05,发送预冻结通知。
预冻结通知携带有前述待冻结进程对应的进程标识。预冻结通知用于向内存管理服务说明,该通知携带的进程标识对应的进程将要被冻结。
续接前述示例,省电应用确定视频应用对应的进程后,通过S05所述的预冻结通知将视频应用对应的进程的进程标识发送给内存管理服务,从而向内存管理服务说明视频应用对应的这些进程将被冻结。
S06,内存管理服务发送内存释放信号。
内存管理服务收到预冻结通知后,对每个待冻结进程执行步骤S06,发送内存释放信号。
内存释放信号的具体形式可以根据实际情况配置,只要确保内存释放信号和电子设备中已经存在的其他信号不同即可,本实施例对此不做限定。
续接前述示例,收到预冻结通知后,内存管理服务从预冻结通知中获得视频应用对应进程的进程标识,然后基于这些进程标识,向视频应用对应的进程发送内存释放信号。
S07,函数库调用强制释放接口。
待冻结进程收到内存释放信号后,待冻结进程的函数库对该进程的内存分配器执行步骤S07,调用强制释放接口。
如前所述,待冻结进程的函数库中预先配置有内存释放信号量和内存释放信号处理函数,其中内存释放信号量可以视为内存释放信号和内存释放信号处理函数的对应关系。
可见,待冻结进程收到内存释放信号后,根据预先配置的内存释放信号量,可以确定需要调用内存释放信号处理函数。于是,待冻结进程调用函数库中的内存释放信号处理函数,使得函数库执行步骤S07。
不同的内存分配器提供的强制释放接口可能相同,也可能不相同。本实施例对强制释放接口的具体形式不做限定。
作为一个示例,当内存分配器为Scudo时,Scudo所提供的强制释放接口可以是mallopt(M_PURGE),即在步骤S07中,函数库可以调用mallopt(M_PURGE)来触发内存分配器Scudo执行强制回收。
续接前述示例,视频应用对应进程收到内存释放信号后,这些进程的函数库调用内存分配器的强制释放接口,从而触发视频应用对应进程的内存分配器执行强制回收。
S08,内存分配器按强制回收方式释放内存。
在函数库调用了强制释放接口后,待冻结进程的内存分配器调用内核的内存管理模块的释放内存接口,以执行步骤S08,按强制回收方式释放内存。
如前所述,在步骤S08中,内存分配器会将待冻结进程占有的空闲内存尽可能地释放给操作***。因此,通过触发内存分配器按强制回收的方式释放内存,可以有效的减少冻结状态的进程所占用的内存,确保操作***有更多的内存资源可以分配给其他运行中的进程。使运行中的进程能够高效的运行。
为了便于理解,本实施例仅以一个待冻结进程为示例说明步骤S06至S08。在实际场景中,一个应用被放后台时,省电应用可能确定出多个待冻结应用,因此内存管理服务会向每一个待冻结进程发送内存释放信号,每一个待冻结进程收到内存释放信号后,都会调用自身的函数库中的内存释放信号处理函数,所以每一个待冻结进程的函数库都会执行步骤S07,即调用待冻结进程的内存分配器的强制释放接口,最终每一个待冻结进程的内存分配器都会按强制回收的方式释放该进程占用的内存。
续接前述示例,视频应用对应进程的函数库调用了强制释放接口后,这些进程内的内存分配器响应对强制释放接口的调用,开始按前述强制回收的方式释放视频应用对应的进程所占用的内存。
S09,省电应用下发进程冻结通知。
进程冻结通知可以携带省电应用确定出的每一个待冻结进程对应的进程标识,收到进程冻结通知后,内核的冻结器就可以将通知携带的进程标识对应的待冻结进程冻结,从而实现被放后台的应用的冻结。
省电应用可以在发送预冻结通知之后执行步骤S09。在本实施例中,为了避免在待冻结进程完成内存释放之前就被冻结,省电应用可以预设一个等待时间,在发送预冻结通知并且经过该等待时间之后,省电应用再执行步骤S09,从而保障每个待冻结进程能够在等待时间内将内存全部释放。
等待时间的具体数值可以根据实际情况设置,本实施例对此不做限定。作为一个示例,等待时间可以设定为10毫秒(ms)。也就是说,省电应用在向内存管理服务发送了预冻结通知后,等待10ms,然后向冻结器下发进程冻结通知。
续接前述示例,省电应用在向内存管理服务下发预冻结通知之后,等待10ms,然后向内核的冻结器下发进程冻结通知,进程冻结通知中携带视频应用对应进程的进程标识,冻结器接收进程冻结通知,然后将视频应用对应的进程冻结。
本实施例具有如下的有益效果:
通过在冻结进程之前发送内存释放命令,触发每个待冻结进程的内存分配器最大限度的释放本进程所占用的空闲内存,减少了后台被冻结的进程占用的内存资源,从而保障电子设备有足量的内存资源可以分配给运行中的进程。
在本申请另一实施例中,省电应用可以在确定内存释放完毕后再下发进程冻结通知。请参见图6,为基于图6所示的软件架构实现的另一种释放内存的方法的时序图。
如图6所示,本实施例中,步骤S01至步骤S08均与图5对应的实施例一致,其具体实施方式也可以参见图5对应的实施例,不再赘述。
A08,内存分配器向函数库通知内存释放完毕。
待冻结进程的内存分配器在释放完待冻结进程的空闲内存后,对函数库执行步骤A08,通知内存释放完毕。
A09,函数库向内存管理服务通知内存释放完毕。
函数库得到通知后,将通知传递给内存管理服务,即执行步骤A09,通知内存释放完毕。
A10,内存管理服务向省电应用通知内存释放完毕。
最后内存管理服务再将通知传递给省电应用,即执行步骤A10,通知内存释放完毕。
省电应用在获得内存管理服务的内存释放完毕的通知后,再执行步骤S09,即向冻结器下发进程冻结通知。
需要说明的,图6为一个待冻结进程的示例。当存在多个待冻结进程时,每个待冻结进程的函数库都会向内存管理服务通知内存释放完毕,内存管理服务可以在获得每一个待冻结进程的内存释放完毕的通知之后,再执行步骤A10。
本实施例的有益效果在于:
进程被冻结后,***只能通过内存压缩的方式回收该进程的内存分配器持有的部分内存,并且内存压缩会占用swap分区的空间。本方案中,省电应用在收到内存释放完毕的通知后再冻结进程,可以确保待冻结进程在内存分配器尽可能地释放完内存之后才被冻结,从而避免被冻结的进程占用电子设备的内存资源。
根据图5和图6所示的释放内存的方法的时序图,可以得到一种释放内存的方法,请参见图7,为本申请提供的一种释放内存的方法的流程图,该方法可以包括如下步骤:
在一些可选的实施例中,如图1所示的电子设备可以执行预先存储的计算机指令,从而实现下述流程中的步骤。
S701,函数库新增内存回收信号量和内存释放信号处理函数。
步骤S701由电子设备在开机后执行,内存回收信号量和内存释放信号处理函数的定义及其作用参见图5对应的实施例中的说明,此处不再赘述。
S702,响应用户的放后台操作,应用从前台放到后台。
用户的放后台操作,是指用户所执行的会触发当前在前台运行的应用切换到后台的操作,示例性的,放后台操作可以是返回桌面的操作,还可以是用户从当前在前台运行的应用直接切换到另一个应用,例如点击另一个应用弹出的消息的操作。
步骤S702的具体实施过程可以参见图5对应的实施例中的S01。
S703,省电应用获得应用放后台的通知。
省电应用可以通过预先订阅或者放后台的应用主动推送的方式获得上述通知,通过应用放后台的通知,省电应用可以知道具体是哪个应用被从前台切换到后台。
步骤S703的具体实施方式可以参见图5对应的实施例中的S02。
S704,判断放后台的应用是否有前台可感知功能。
若放后台的应用没有前台可感知功能,执行步骤S705,若放后台的应用有前台可感知功能,结束本流程。
例如,音乐应用在后台仍然可以播放音乐,导航应用在后台仍然可以播报导航信息,播放音乐和播报导航信息就属于前台可感知功能。
如前所述,步骤S704为可选的步骤。在一些场景中,电子设备可以在应用放后台时直接冻结该应用,而不论该应用是否有前台可感知功能,此时就可以不执行步骤S704。
步骤S704的具体实施方式可以参见图5对应的实施例中的S03。
S705,发送预冻结通知给内存管理服务。
预冻结通知携带有待冻结进程的进程标识,预冻结通知用于向内存管理服务说明对应的进程将被冻结。待冻结进程为放后台的应用对应的进程。例如,在S702中视频应用被从前台切到后台,则上述预冻结通知携带视频应用对应进程的进程标识。
待冻结进程由省电应用根据放后台的应用的应用标识确定。
步骤S705的具体实施方式可以参见图5所示的实施例的步骤S04和S05。
S706,内存管理服务发送内存释放信号给待冻结进程。
在S706中,内存管理服务将内存释放信号发送给预冻结通知携带的进程标识对应的进程,从而触发这些进程进行强制回收。
例如,视频应用被放后台后,在S706中内存管理服务将内存释放信号发送给视频应用对应的进程。
步骤S706的具体实现方式可以参见图5对应的实施例中的步骤S06。
S707,待冻结进程执行强制回收。
待冻结进程收到内存释放信号后,待冻结进程的函数库可以响应内存释放信号,调用内存分配器的强制释放接口,从而执行强制回收。
步骤S707的具体实现方式可以参见图5对应的实施例的步骤S07和S08。
S708,待冻结进程被冻结。
在步骤S708中,省电应用可以向内核的冻结器下发进程冻结通知,进程冻结通知携带有待冻结进程的进程标识,收到进程冻结通知后冻结器就可以将其中的进程标识对应的进程冻结。
步骤S709的具体实现方式可以参见图5对应的实施例的步骤S09,或者参见图6对应的实施例的步骤A08至A10,以及步骤S09。
上述实施例所具有的有益效果可以参见图5和图6所示的实施例,不再赘述
根据图5和图6所示的释放内存的方法的时序图,以及图7所示的流程图,还可以得到如图8所示的释放内存的方法的流程图,该方法可以包括如下步骤:
S801,应用放后台时,将应用对应的进程确定为待冻结进程。
在步骤S801中,电子设备可以响应于用户执行的放后台操作,将当前在前台运行的应用放到后台,然后根据被放后台的应用的应用标识找到该应用对应的进程,从而确定待冻结进程。
在一些可选的实施例中,电子设备在执行步骤S801前可以先判断被放后台的应用是否有前台可感知功能,如果有前台可感知功能则不执行S801,并结束本方法,如果没有前台可感知功能,则执行步骤S801。
步骤S801的具体过程可以参见图5所示的步骤S01至S04。
S802,通过强制回收的方式释放待冻结进程占用的内存。
在步骤S802中,电子设备可以调用待冻结进程的内存分配器的强制释放接口,使得待冻结进程通过强制回收的方式释放占用的内存。
步骤S802的具体过程可以参见图5所示的步骤S05至S08。
S803,冻结待冻结进程。
在步骤S803中,电子设备可以在内存释放完后,利用内核层的冻结器将待冻结进程冻结。
步骤S803的具体过程可以参见图5所示的步骤S09,以及图6所示的步骤A08至A10。
上述释放内存的方法所具有的有益效果可以参见图5和图6所示的实施例,不再赘述。
本申请实施例提供一种电子设备,包括存储器和一个或多个处理器。
存储器用于存储计算机程序。
一个或多个处理器用于执行计算机程序,具体用于实现本申请任一实施例所提供的释放内存的方法。
本申请实施例还提供一种计算机存储介质,用于存储计算机程序,该计算机程序被执行时,具体用于实现本申请任一实施例所提供的释放内存的方法。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请实施例涉及的多个,是指大于或等于两个。需要说明的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
Claims (7)
1.一种释放内存的方法,其特征在于,应用于电子设备,所述电子设备的操作***包括省电应用、内存管理服务和冻结器,所述方法包括:
应用放后台时,所述省电应用根据前台可感知应用列表判断所述应用是否有前台可感知功能,所述前台可感知应用列表用于记录具有前台可感知功能的应用,所述应用是否具有前台可感知功能根据所述应用的类别确定,所述应用的类别在安装所述应用时获得;
若所述应用没有前台可感知功能,将所述应用对应的进程确定为待冻结进程;所述待冻结进程包括函数库和内存分配器;
所述省电应用向所述内存管理服务发送预冻结通知,所述预冻结通知携带所述待冻结进程的进程标识;
所述内存管理服务根据所述待冻结进程的进程标识,向所述待冻结进程的函数库发送内存释放信号;
所述函数库响应所述内存释放信号,调用所述内存分配器的强制释放接口;
所述内存分配器按强制回收方式释放所述待冻结进程占用的内存;
所述省电应用确定所述待冻结进程占用的内存释放完毕后,向所述冻结器下发进程冻结通知,所述进程冻结通知携带所述待冻结进程的进程标识;
所述冻结器根据所述待冻结进程的进程标识,冻结所述待冻结进程。
2.根据权利要求1所述的方法,其特征在于,所述将所述应用对应的进程确定为待冻结进程之前,还包括:
响应用户操作,将当前在前台运行的应用放后台。
3.根据权利要求1所述的方法,其特征在于,所述将所述应用对应的进程确定为待冻结进程之前,还包括:
在所述电子设备熄屏时,将当前在前台运行的应用放后台。
4.根据权利要求1所述的方法,其特征在于,所述省电应用确定所述待冻结进程占用的内存释放完毕后,向所述冻结器下发进程冻结通知,包括:
所述省电应用获得所述内存分配器上报的内存释放完毕的通知后,向所述冻结器下发进程冻结通知。
5.根据权利要求1所述的方法,其特征在于,所述省电应用确定所述待冻结进程占用的内存释放完毕后,向所述冻结器下发进程冻结通知,包括:
所述省电应用在发送所述预冻结通知且经过预设的等待时间后,向所述冻结器下发进程冻结通知。
6.一种电子设备,其特征在于,包括存储器和一个或多个处理器;
所述存储器用于存储计算机程序;
所述一个或多个处理器用于执行所述计算机程序,具体用于实现如权利要求1至5任意一项所述的释放内存的方法。
7.一种计算机存储介质,其特征在于,用于存储计算机程序,所述计算机程序被执行时,具体用于实现如权利要求1至5任意一项所述的释放内存的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210161930.XA CN115525404B (zh) | 2022-02-22 | 2022-02-22 | 释放内存的方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210161930.XA CN115525404B (zh) | 2022-02-22 | 2022-02-22 | 释放内存的方法、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115525404A CN115525404A (zh) | 2022-12-27 |
CN115525404B true CN115525404B (zh) | 2023-09-19 |
Family
ID=84693989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210161930.XA Active CN115525404B (zh) | 2022-02-22 | 2022-02-22 | 释放内存的方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115525404B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252389A (zh) * | 2013-06-27 | 2014-12-31 | 腾讯科技(深圳)有限公司 | 应用程序运行方法、***及应用程序 |
CN104375828A (zh) * | 2014-10-27 | 2015-02-25 | 小米科技有限责任公司 | 内存优化方法及装置 |
CN106648865A (zh) * | 2016-12-15 | 2017-05-10 | 北京奇虎科技有限公司 | 智能终端及优化游戏运行环境的方法、*** |
CN108287760A (zh) * | 2017-08-08 | 2018-07-17 | 珠海市魅族科技有限公司 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
CN110018905A (zh) * | 2018-01-10 | 2019-07-16 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN112433831A (zh) * | 2020-11-17 | 2021-03-02 | 珠海格力电器股份有限公司 | 应用冻结方法、存储介质及电子设备 |
-
2022
- 2022-02-22 CN CN202210161930.XA patent/CN115525404B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104252389A (zh) * | 2013-06-27 | 2014-12-31 | 腾讯科技(深圳)有限公司 | 应用程序运行方法、***及应用程序 |
CN104375828A (zh) * | 2014-10-27 | 2015-02-25 | 小米科技有限责任公司 | 内存优化方法及装置 |
CN106648865A (zh) * | 2016-12-15 | 2017-05-10 | 北京奇虎科技有限公司 | 智能终端及优化游戏运行环境的方法、*** |
CN108287760A (zh) * | 2017-08-08 | 2018-07-17 | 珠海市魅族科技有限公司 | 终端设备控制方法及装置、终端设备及计算机可读存储介质 |
CN110018905A (zh) * | 2018-01-10 | 2019-07-16 | 广东欧珀移动通信有限公司 | 信息处理方法、装置、计算机设备和计算机可读存储介质 |
CN112433831A (zh) * | 2020-11-17 | 2021-03-02 | 珠海格力电器股份有限公司 | 应用冻结方法、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115525404A (zh) | 2022-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111966492B (zh) | 内存回收方法、装置、电子设备及计算机可读存储介质 | |
CN113722087B (zh) | 虚拟内存管理方法和电子设备 | |
WO2022078105A1 (zh) | 内存管理方法、电子设备以及计算机可读存储介质 | |
CN112732434A (zh) | 一种应用管理方法及装置 | |
WO2023202429A1 (zh) | 垃圾回收的方法及电子设备 | |
CN116107922A (zh) | 一种应用程序的管理方法及电子设备 | |
CN110413383B (zh) | 事件处理方法、装置、终端及存储介质 | |
CN113590500A (zh) | 一种内存管理方法及终端设备 | |
WO2024027544A1 (zh) | 内存管理方法及电子设备 | |
CN115525404B (zh) | 释放内存的方法、设备和存储介质 | |
CN116679900B (zh) | 一种音频业务处理方法、固件去加载方法及相关装置 | |
CN116126744A (zh) | 一种内存回收方法、装置及终端设备 | |
CN114253737B (zh) | 电子设备及其内存回收方法、介质 | |
CN113760191B (zh) | 数据读取方法、装置、存储介质和程序产品 | |
CN112783418B (zh) | 一种存储应用程序数据的方法及移动终端 | |
CN117076089B (zh) | 应用管理方法、终端设备及存储介质 | |
WO2023185684A1 (zh) | 一种应用程序的进程查杀方法及电子设备 | |
CN113760192B (zh) | 数据读取方法、装置、存储介质和程序产品 | |
WO2024032430A1 (zh) | 管理内存的方法和电子设备 | |
WO2023061014A1 (zh) | 任务管理方法及装置 | |
WO2024093431A1 (zh) | 一种图像绘制方法及电子设备 | |
WO2023174322A1 (zh) | 图层处理方法和电子设备 | |
CN115934302A (zh) | 一种内存泄漏处理方法及电子设备 | |
CN116719752A (zh) | 一种分配内存的方法、电子设备及存储介质 | |
CN118093128A (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 |