CN115794413B - 一种内存处理方法及相关装置 - Google Patents

一种内存处理方法及相关装置 Download PDF

Info

Publication number
CN115794413B
CN115794413B CN202310029668.8A CN202310029668A CN115794413B CN 115794413 B CN115794413 B CN 115794413B CN 202310029668 A CN202310029668 A CN 202310029668A CN 115794413 B CN115794413 B CN 115794413B
Authority
CN
China
Prior art keywords
memory
application
snapshot
terminal equipment
terminal device
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
Application number
CN202310029668.8A
Other languages
English (en)
Other versions
CN115794413A (zh
Inventor
鲁超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Honor Device Co Ltd
Original Assignee
Honor Device Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Honor Device Co Ltd filed Critical Honor Device Co Ltd
Priority to CN202310029668.8A priority Critical patent/CN115794413B/zh
Publication of CN115794413A publication Critical patent/CN115794413A/zh
Application granted granted Critical
Publication of CN115794413B publication Critical patent/CN115794413B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Telephone Function (AREA)

Abstract

本申请实施例提供一种内存处理方法及相关装置,涉及终端技术领域。方法包括:第一时刻,第一应用从终端设备的前台向后台切换,终端设备得到第一应用的快照的内存大小为第一内存;第二时刻,第二应用从终端设备的前台向后台切换,终端设备得到第二应用的快照的内存大小为第二内存;第三时刻,第三应用从终端设备的前台向后台切换,终端设备得到第三应用的快照的内存大小为第三内存;其中,第一内存大于第二内存,第二内存大于第三内存,第一时刻时终端设备的可用内存大于第二时刻时终端设备的可用内存,第二时刻时终端设备的可用内存大于第三时刻时终端设备的可用内存。这样,可以节省终端设备的可用内存,提升终端设备的运行流畅性。

Description

一种内存处理方法及相关装置
技术领域
本申请涉及终端技术领域,尤其涉及一种内存处理方法及相关装置。
背景技术
随着终端技术的发展,终端设备中应用的数量越来越多,每个应用占用的内存也越来越大,导致终端设备经常出现可用内存空间不足的情况。
可能的实现中,终端设备可以将一些后台运行的应用关闭,从而节省可用内存空间。然而,当用户想要使用该应用时,需要重新启动该应用,影响用户体验。
发明内容
本申请实施例提供一种内存处理方法及相关装置,当终端设备的内存紧张时,可以对应用的快照进行压缩处理,从而为终端设备进行内存瘦身,节省终端设备的可用内存,提升终端设备的运行流畅性。
第一方面,本申请实施例提供一种内存处理方法,方法包括:
第一时刻,第一应用从终端设备的前台向后台切换,终端设备得到第一应用的快照的内存大小为第一内存;第二时刻,第二应用从终端设备的前台向后台切换,终端设备得到第二应用的快照的内存大小为第二内存;第三时刻,第三应用从终端设备的前台向后台切换,终端设备得到第三应用的快照的内存大小为第三内存;其中,第一内存大于第二内存,第二内存大于第三内存,第一时刻时终端设备的可用内存大于第二时刻时终端设备的可用内存,第二时刻时终端设备的可用内存大于第三时刻时终端设备的可用内存。这样,可以为终端设备进行内存瘦身,提升终端设备的运行流畅性。
一种可能的实现中,第一应用的快照未进行压缩处理,第二应用的快照采用第一压缩方式进行压缩处理,第三应用的快照采用第二压缩方式进行压缩处理;其中,对于相同的压缩对象,第一压缩方式压缩压缩对象后的内存占用大于第二压缩方式压缩压缩对象后的内存占用。这样,终端设备可以根据自身内存的大小确定所采用的压缩算法,从而节省终端设备的内存空间,提升用户体验。
一种可能的实现中,第一应用的快照、第二应用的快照、以及第三应用的快照在未压缩前的内存大小一致。这样,终端设备可以对不同的应用的快照采用不同的压缩处理方式,从而可以根据终端设备的内存情况灵活处理应用快照所占用的内存大小,为终端设备节省内存空间。
一种可能的实现中,终端设备包括第一屏幕和第二屏幕,第一应用、第二应用和第三应用均在第一屏幕中从前台向后台切换,或者,第一应用、第二应用和第三应用均在第二屏幕中从前台向后台切换。这样,可以使得第一应用、第二应用和第三应用的快照内存大小具有对比性。
一种可能的实现中,第一应用从终端设备的前台向后台切换,终端设备得到第一应用的快照的内存大小为第一内存,包括:当第一应用从终端设备的前台向后台切换时,终端设备生成第一应用的快照,并获取终端设备的可用内存的大小;当终端设备的可用内存大于第一预设值时,终端设备不对第一应用的快照进行压缩处理,保存内存大小为第一内存的第一应用的快照。这样,终端设备可以不需要进行应用快照的压缩和解压缩处理,节省算力。
一种可能的实现中,第二应用从终端设备的前台向后台切换,终端设备得到第二应用的快照的内存大小为第二内存,包括:当第二应用从终端设备的前台向后台切换时,终端设备生成第二应用的快照,并获取终端设备的可用内存的大小;当终端设备的可用内存小于或等于第一预设值,且终端设备的可用内存大于第二预设值时,终端设备采用第一压缩方式对第二应用的快照进行压缩处理,保存内存大小为第二内存的第二应用的快照。这样,终端设备可以快速对应用快照的压缩和解压缩进行处理,减少终端设备的卡顿,提升用户体验。
一种可能的实现中,终端设备采用第一压缩方式对第二应用的快照进行压缩处理,保存内存大小为第二内存的第二应用的快照之后,还包括:终端设备销毁第二应用的未压缩的快照。这样,终端设备可以通过销毁第二应用的未压缩的快照,从而释放硬件缓存中的内存,减少应用快照对终端设备内存空间的占用。
一种可能的实现中,第三应用从终端设备的前台向后台切换,终端设备得到第三应用的快照的内存大小为第三内存,包括:当第三应用从终端设备的前台向后台切换时,终端设备生成第三应用的快照,并获取终端设备的可用内存的大小;当终端设备的可用内存小于或等于第二预设值时,终端设备采用第二压缩方式对第三应用的快照进行压缩处理,保存内存大小为第三内存的第三应用的快照。这样,可以节省更多的终端设备的内存。
一种可能的实现中,终端设备采用第二压缩方式对第三应用的快照进行压缩处理,保存内存大小为第三内存的第三应用的快照之后,还包括:终端设备销毁第三应用的未压缩的快照。这样,终端设备可以通过销毁第三应用的未压缩的快照,从而释放硬件缓存中的内存,减少应用快照对终端设备内存空间的占用。
一种可能的实现中,第四时刻,第二应用从终端设备的后台向前台切换,终端设备对压缩后的快照进行解压缩处理;第四时刻晚于第二时刻;终端设备在前台显示解压缩后的第二应用的快照对应的界面。这样,终端设备对压缩后的快照进行解压缩处理,可以得到原始的未经压缩的快照,从而可以在终端设备前台显示应用快照对应的界面,实现快照功能,进而提升用户体验。
一种可能的实现中,终端设备对压缩后的快照进行解压缩处理之后,还包括:终端设备销毁第二应用的压缩后的快照。这样,终端设备可以通过销毁应用的压缩后的快照,从而释放硬件缓存中的内存,减少应用快照对终端设备内存空间的占用。
第二方面,本申请实施例提供一种内存处理的装置,该装置可以是终端设备,也可以是终端设备内的芯片或者芯片***。该装置可以包括处理单元和显示单元。处理单元用于实现第一方面或第一方面的任意一种可能的实现方式中终端设备执行的与处理相关的任意方法。显示单元用于实现第一方面或第一方面的任意一种可能的实现方式中终端设备执行的与显示相关的任意方法。当该装置是终端设备时,该处理单元可以是处理器。该装置还可以包括存储单元,该存储单元可以是存储器。该存储单元用于存储指令,该处理单元执行该存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的方法。当该装置是终端设备内的芯片或者芯片***时,该处理单元可以是处理器。该处理单元执行存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的方法。该存储单元可以是该芯片内的存储单元(例如,寄存器、缓存等),也可以是该终端设备内的位于该芯片外部的存储单元(例如,只读存储器、随机存取存储器等)。
一种可能的实现方式中,处理单元,用于得到第一应用的快照的内存大小;用于得到第二应用的快照的内存大小;还用于得到第二应用的快照的内存大小。
一种可能的实现方式中,处理单元,用于对第二应用的快照采用第一压缩方式进行压缩处理;还用于对第三应用的快照采用第二压缩方式进行压缩处理。
一种可能的实现方式中,第一应用的快照、第二应用的快照、以及第三应用的快照在未压缩前的内存大小一致。
一种可能的实现方式中,终端设备包括第一屏幕和第二屏幕,第一应用、第二应用和第三应用均在第一屏幕中从前台向后台切换,或者,第一应用、第二应用和第三应用均在第二屏幕中从前台向后台切换。
一种可能的实现方式中,处理单元,用于生成第一应用的快照,并获取终端设备的可用内存的大小;还用于保存内存大小为第一内存的第一应用的快照。
一种可能的实现方式中,处理单元,用于生成第二应用的快照,并获取终端设备的可用内存的大小;还用于采用第一压缩方式对第二应用的快照进行压缩处理,保存内存大小为第二内存的第二应用的快照。
一种可能的实现方式中,处理单元,用于销毁第二应用的未压缩的快照。
一种可能的实现方式中,处理单元,用于生成第三应用的快照,并获取终端设备的可用内存的大小;采用第二压缩方式对第三应用的快照进行压缩处理,保存内存大小为第三内存的第三应用的快照。
一种可能的实现方式中,处理单元,用于销毁第三应用的未压缩的快照。
一种可能的实现方式中,处理单元,用于对压缩后的快照进行解压缩处理。显示单元,用于显示解压缩后的第二应用的快照对应的界面。
一种可能的实现方式中,处理单元,用于销毁第二应用的压缩后的快照。
第三方面,本申请实施例提供一种终端设备,包括处理器和存储器,存储器用于存储代码指令,处理器用于运行代码指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的内存处理方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的内存处理方法。
第五方面,本申请实施例提供一种包括计算机程序的计算机程序产品,当计算机程序在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的内存处理方法。
第六方面,本申请提供一种芯片或者芯片***,该芯片或者芯片***包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的内存处理方法。其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
在一种可能的实现中,本申请中上述描述的芯片或者芯片***还包括至少一个存储器,该至少一个存储器中存储有指令。该存储器可以为芯片内部的存储单元,例如,寄存器、缓存等,也可以是该芯片的存储单元(例如,只读存储器、随机存取存储器等)。
应当理解的是,本申请的第二方面至第六方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的一种终端设备的结构示意图;
图2为本申请实施例提供的一种终端设备的软件结构示意图;
图3为本申请实施例提供的一种终端设备生成快照和获取快照的流程图;
图4为本申请实施例提供的一种终端设备压缩快照和解压缩快照的流程图;
图5为本申请实施例提供的另一种终端设备压缩快照和解压缩快照的流程图;
图6为本申请实施例提供的一种快照内存压缩的管控策略流程图;
图7为本申请实施例提供的一种内存处理方法的示意图;
图8为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1、术语
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a--c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
2、终端设备
本申请实施例的终端设备也可以为任意形式的电子设备,例如,电子设备可以包括手持式设备、车载设备等。例如,一些电子设备为:手机(mobile phone)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备(mobile internet device,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmented reality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(self driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、蜂窝电话、无绳电话、会话启动协议(session initiationprotocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、个人数字助理(personal digital assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。
作为示例而非限定,在本申请实施例中,该电子设备还可以是可穿戴设备。可穿戴设备也可以称为穿戴式智能设备,是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如眼镜、手套、手表、服饰及鞋等。可穿戴设备即直接穿在身上,或是整合到用户的衣服或配件的一种便携式设备。可穿戴设备不仅仅是一种硬件设备,更是通过软件支持以及数据交互、云端交互来实现强大的功能。广义穿戴式智能设备包括功能全、尺寸大、可不依赖智能手机实现完整或者部分的功能,例如:智能手表或智能眼镜等,以及只专注于某一类应用功能,需要和其它设备如智能手机配合使用,如各类进行体征监测的智能手环、智能首饰等。
此外,在本申请实施例中,电子设备还可以是物联网(internet of things,IoT)***中的终端设备,IoT是未来信息技术发展的重要组成部分,其主要技术特点是将物品通过通信技术与网络连接,从而实现人机互连,物物互连的智能化网络。
本申请实施例中的终端设备也可以称为:用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置等。
在本申请实施例中,终端设备或各个网络设备包括硬件层、运行在硬件层之上的操作***层,以及运行在操作***层上的应用层。该硬件层包括中央处理器(centralprocessing unit,CPU)、内存管理单元(memory management unit,MMU)和内存(也称为主存)等硬件。该操作***可以是任意一种或多种通过进程(process)实现业务处理的计算机操作***,例如,Linux操作***、Unix操作***、Android操作***、iOS操作***或windows操作***等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。
示例性的,图1示出了终端设备的结构示意图。
终端设备可以包括处理器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),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器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)接口,SIM卡接口,和/或USB接口等。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对终端设备的结构限定。在本申请另一些实施例中,终端设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作***,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储终端设备使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行终端设备的各种功能应用以及数据处理。例如,可以执行本申请实施例的方法。
移动通信模块150可以提供应用在终端设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。
无线通信模块160可以提供应用在终端设备上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线转为电磁波辐射出去。
终端设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。终端设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
终端设备可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音频播放或录音等。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。在一些实施例中,终端设备可以包括1个或N个显示屏194,N为大于1的正整数。终端设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。
图2是本申请实施例的终端设备的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android***分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和***库,硬件抽象层(hardware abstract layer,HAL),以及内核层。
应用程序层可以包括一系列应用程序包。如图2所示,应用程序包可以包括电话、音乐、相机等应用程序。应用程序可以包括***应用和三方应用。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括生成/获取快照、资源管理器、通知管理器、内容提供器和窗口管理器等。
资源管理器为应用程序提供各种资源,例如本地化字符串、图标、图片、布局文件、视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息、发出提示音、终端设备振动、指示灯闪烁等。
内容提供器用于在不同的应用程序之间实现数据共享的功能,允许一个程序访问另一个程序中的数据,同时还能保证被访问的数据的安全性。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏、锁定屏幕、触摸屏幕、拖拽屏幕、截取屏幕等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。例如本申请实施例中,虚拟机可以用于执行对应用快照的压缩和解压缩处理,以及销毁缓存中的应用快照等功能。
***库可以包括多个功能模块。例如:媒体库(media libraries)、函数库(function libraries)、图形处理库(例如:OpenGL ES)等。
硬件抽象层是介于内核层和Android runtime之间的抽象出来的一层结构。硬件抽象层可以是对硬件驱动的封装,为上层应用的调用提供统一接口。硬件抽象层可以包括数据压缩模块、管控模块,以及硬件配置模块等。
数据压缩模块可以用于处理快照数据,例如本申请实施例中,当应用从终端设备的前台切换到后台时,数据压缩模块可以将保存的快照数据进行压缩,并清理掉压缩前的原始快照数据;当应用从终端设备的后台切换到前台时,数据压缩模块还可以将压缩后的快照数据进行解压缩,并将解压缩后的原始快照数据返回给上层应用。
管控模块可以监控终端设备的内存使用情况,还可以根据内存使用情况确定是否需要对应用的快照数据进行压缩处理。
内核层是硬件和软件之间的层。内核层可以包括显示驱动、摄像头驱动、音频驱动等。
需要说明的是,本申请实施例仅以安卓***举例来说明,在其他操作***中(例如Windows***,IOS***等),只要各个功能模块实现的功能和本申请的实施例类似,也能实现本申请的方案。
在终端设备中,用户可以打开多个应用,还可以在多个应用之间进行切换。为了提升用户体验,当用户在终端设备上打开最近任务时,终端设备可以显示各个应用退出前台时的界面。并且在终端设备重启之后,当用户打开最近任务时,终端设备也可以显示重启之前各个应用退出前台时的界面。
为了实现上述功能,当应用从终端设备的前台切换到后台时,终端设备可以对应用界面进行截屏操作,生成该应用当前界面的截图,该截图可以称为该应用的快照(snapshot),快照可以理解为终端设备中的缓存应用界面。终端设备可以将该应用的快照存储到内存中。当该应用再次从终端设备的后台切换到前台时,终端设备可以使用内存中存储的该应用的快照加载该应用,显示快照对应的页面。
示例性的,图3示出了终端设备生成快照以及获取快照的两部分的流程。
第一部分、生成快照。
当应用从前台切换到后台时,终端设备可以调用应用退出的函数,例如应用退出的函数可以为handleClosingApps(),该函数可以对将要切换到后台的应用进行一些处理,其中,处理可以包括为该应用创建快照。
可能的创建快照的实现中,终端设备可以调用createTaskSnapshot()函数为该应用截取当前显示界面的照片。进一步,终端设备可以将该应用的快照保存到缓存中,例如,终端设备可以将该应用的快照保存到mcache缓存中。
其中,终端设备可以在mcache缓存中以键值对key-value形式保存该应用的快照。示例性的,value值可以为该应用的快照snapshot,key值可以为该应用的包名,也可以为该应用的应用标识(application identification,AppId),还可以为其他标识该应用的信息,具体该应用对应的key值的取值,本申请实施例不作限定。
可以理解的是,mcache缓存中snapshot可以映射到硬件缓存HardwareBuffer中,也就是说,应用的快照数据可以保存在硬件缓存中的。
第二部分、获取快照。
当应用从后台切换到前台时,终端设备可以调用启动应用快照对应的界面的函数,例如启动应用快照对应的界面的函数可以为addStartWindow(),该函数可以将该后台应用显示到终端设备的前台上。其中,在应用切换到前台的过程中,终端设备可以获取该应用的快照。
可能的获取快照的实现中,终端设备可以调用getSnapshot()函数从mcache缓存中获取该应用的快照。mcache缓存可以通过与硬件缓存HardwareBuffer的映射关系获得保存在硬件缓存中的快照数据。
可以理解的是,应用的快照所占用的内存可以与终端设备的屏幕尺寸有关,例如,对于折叠屏手机,手机外屏的应用快照所占用的内存可以为10MB左右,手机内屏的应用快照所占用的内存可以为17MB左右。若用户平均打开应用的数目为14个,最多打开应用的数目为23个,则应用快照占用终端设备的内存可以为140MB到391MB。
也就是说,当终端设备后台运行的应用数量增多时,应用的快照可以占用终端设备较多的内存空间,从而减少了终端设备的可用内存空间,导致终端设备的内存紧张。
当终端设备的内存紧张时,可能出现两方面影响。
一方面,当应用向终端设备申请内存时,终端设备会采取慢速路径为应用分配内存,也就是说,终端设备会先执行回收内存的动作,再为应用分配内存。相对于内存充足不需要执行回收内存动作的分配内存的方式来说,采取慢速路径为应用分配内存的效率变低,从而导致应用可能出现卡顿。
另一方面,终端设备的内存过低可能会触发低内存查杀,也就是说,内存过低时,终端设备可以将后台的部分应用关闭,回收部分内存。这样,当用户再次使用被关闭的应用时,该应用需要重新启动,终端设备无法为用户快速显示应用退出前台时的界面,从而影响用户体验。
有鉴于此,本申请实施例提供的一种内存处理方法,当终端设备的内存紧张时,可以对应用的快照进行压缩处理,从而为终端设备进行内存瘦身,节省终端设备的可用内存,提升终端设备的运行流畅性。
图4示出了本申请实施例提供的终端设备生成快照时对快照进行压缩,以及获取快照时对快照进行解压缩的两部分的处理流程。
第一部分、生成快照时,对快照进行压缩处理。
当应用从前台切换到后台时,终端设备生成快照并将快照保存到硬件缓存HardwareBuffer的过程可以参照上述图3对应的实施例中的相关描述,不再赘述。
本申请实施例中,终端设备可以将硬件缓存HardwareBuffer中的快照数据进行压缩,生成压缩后的硬件缓存数据,并保存在压缩硬件缓存CompressHardwareBuffer中。同时,终端设备还可以将硬件缓存HardwareBuffer中保存的未压缩的原始快照数据进行销毁。
可以理解的是,在上述图3对应的实施例的基础上,对硬件缓存HardwareBuffer中的快照数据进行压缩,可以保持终端设备中的生成快照的原始执行逻辑不变,保证了方案的兼容性,从而增加终端设备对快照处理的通用性。
可选地,终端设备在生成快照时,可以对快照数据进行压缩,生成压缩后的硬件缓存数据,并保存在压缩硬件缓存CompressHardwareBuffer中。这时,由于终端设备的硬件缓存HardwareBuffer中未保存未压缩的原始快照数据,因此,终端设备也不需要对硬件缓存HardwareBuffer中的快照数据进行销毁,从而可以节省终端设备的算力。
第二部分、获取快照时,对快照进行解压缩处理。
当应用从后台切换到前台时,终端设备从缓存中获取快照的过程可以参照上述图3对应的实施例中的相关描述,不再赘述。可以理解的是,终端设备可以从压缩硬件缓存CompressHardwareBuffer中获取压缩后的快照数据。
本申请实施例中,终端设备可以将压缩硬件缓存CompressHardwareBuffer中的压缩后的快照数据进行解压缩,生成应用的原始快照数据,并保存在硬件缓存HardwareBuffer中。同时,终端设备可以将压缩硬件缓存CompressHardwareBuffer中保存的压缩后的快照数据进行销毁。
示例性的,图5示出了本申请实施例对快照进行压缩和解压缩的两部分的具体流程。
如图5所示,硬件缓存HardwareBuffer可以用于保存未压缩的原始快照数据,在HardwareBuffer保存原始快照数据之前,HardwareBuffer可以向终端设备申请内存。可能的实现中,HardwareBuffer可以调用ioctl和mmap接口向终端设备的DMA区域申请内存,HardwareBuffer申请的dma_buf内存块可以用于存储未压缩的原始快照数据。
其中,ioctl接口可以用于向终端设备的内核驱动层进行内存大小的申请。mmap接口可以用于确定该申请到的内存的访问方式,例如,内存访问方式可以为可读,和/或可写。DMA区域可以为终端设备分配多媒体类型的内存区域,例如终端设备为图片、音频、视频等分配的内存区域。
压缩硬件缓存CompressHardwareBuffer可以用于保存压缩后的快照数据,在CompressHardwareBuffer保存快照数据之前,CompressHardwareBuffer可以向终端设备申请内存。可能的实现中,CompressHardwareBuffer可以调用ioctl和mmap接口向终端设备的DMA区域申请内存,CompressHardwareBuffer申请的dma_buf内存块可以用于存储压缩后的快照数据。
可以理解的是,压缩硬件缓存CompressHardwareBuffer可以为本申请实施例实现压缩快照功能所新增的模块,CompressHardwareBuffer可以对硬件缓存HardwareBuffer中的原始快照数据进行压缩。
第一部分、压缩流程。
可能的实现中,在CompressHardwareBuffer申请dma_buf内存块之后,终端设备可以根据文件描述符(file descriptor,fd)找到保存原始快照数据的硬件缓存HardwareBuffer,并对该缓存中的原始快照数据进行压缩。终端设备还可以将压缩后的快照数据保存到CompressHardwareBuffer对应的dma_buf内存块中。同时,终端设备可以调用unmap接口来释放硬件缓存HardwareBuffer对应的dma_buf内存块,从而减少终端设备内存空间的占用。
第二部分、解压缩流程。
可能的实现中,在HardwareBuffer申请dma_buf内存块之后,终端设备可以根据fd找到保存压缩后的快照数据的压缩硬件缓存CompressHardwareBuffer,并对该缓存中的快照数据进行解压缩。终端设备还可以将解压缩后的原始快照数据保存到HardwareBuffer对应的dma_buf内存块中。同时,终端设备可以调用unmap接口来释放压缩硬件缓存CompressHardwareBuffer对应的dma_buf内存块,从而减少终端设备内存空间的占用。
本申请实施例中,终端设备可以通过不同的方式对快照数据进行压缩或者解压缩处理。具体的对快照数据进行压缩或者解压缩的处理方式,本申请实施例不作限定。
一种可能的实现中,终端设备可以使用压缩算法对快照数据进行压缩处理。示例性的,压缩算法可以包括:memcpy压缩算法、LZ4压缩算法、snappy压缩算法、zlib压缩算法、zstd压缩算法等。
其中,在选择压缩算法时,终端设备可以考虑压缩效率、稳定性、压缩比、压缩速度以及解压缩速度等多方面因素考虑。例如,LZ4压缩算法的压缩效率相对较好,压缩速度以及解压速度相对较快,因此,本申请实施例可以选择LZ4压缩算法对快照进行压缩或解压缩处理。可以理解的是,本申请实施例对具体采用的压缩算法不作限定。
为便于描述,本申请实施例将使用压缩算法进行的压缩处理称为压缩方法一。
可以理解的是,压缩方法一可以是对快照的整体数据的压缩,因此,压缩方法一也可以称为全量压缩。终端设备对快照进行全量压缩时,终端设备需要对快照执行压缩的计算过程以及解压缩的计算过程,执行时间相对较长,但压缩方式一的压缩比比较高,可以节省更多的终端设备的内存。因此,压缩方法一可以在终端设备内存很低的场景下使用。
另一种可能的实现中,终端设备可以通过调整快照格式的方法对快照数据进行压缩处理,也就是说,终端设备不对快照数据进行压缩处理,而是将内存较大的快照格式调整为内存较小的快照格式。示例性的,终端设备可以通过调整位图格式bitsPerPixel参数的方式改变快照的格式,例如,终端设备可以将占用内存空间较大的RGBA888格式的快照调整为RGB_565格式的快照,并进行保存。
可选地,终端设备计算不同格式对应的快照所占用的内存空间,满足下述公式:
其中,P可以为当前进行计算的快照,numBytes为该快照占用内存空间的值,width可以为该快照的宽度,height可以为该快照的长度,bitsPerPixel可以为位图格式,不同的图片格式所对应的bitsPerPixel的值可以不同。
可以理解的是,RGBA888格式和RGB_565格式的快照的显示效果差别不大,且通过上述公式计算可知,相对于RGBA888格式的快照,RGB_565格式的快照所占用的内存空间可以减少50%左右,因此,通过调整快照的格式可以在保证不影响用户体验的前提下,达到降低内存占用的目的。
为便于描述,本申请实施例将使用图片格式转换进行的压缩处理称为压缩方法二。
可以理解的是,压缩方法二通过修改快照格式降低内存占用,而不需要对快照执行压缩的计算过程以及解压缩的计算过程,算力较小,处理快照的速度更快,执行时间相对较短,因此,压缩方法二可以在终端设备内存相对较小的场景下使用。
由于终端设备进行内存压缩时是需要时间的,也就是说,当终端设备对快照进行内存压缩时,在性能上会有一定的损耗,因此,终端设备可以指定快照内存压缩的管控策略。可能的实现中,终端设备可以根据当前终端设备中剩余的可用内存来决定采用的快照压缩方式。
图6示出了本申请实施例提供的一种快照内存压缩的管控策略的流程图。
S601、应用切后台。
S602、获取终端设备的可用内存信息。
可能的实现中,终端设备可以通过读取终端设备的/proc/meminfo信息来获取终端设备的可用内存信息。
当获取到终端设备的可用内存信息后,终端设备可以根据可用内存大小确定快照的内存压缩方式。
S603、可用内存是否高于预设值X。
当可用内存高于预设值X时,可以说明终端设备的可用内存充足。当应用从终端设备的前台切换到后台时,终端设备可以不对该应用的快照进行压缩处理,则可以执行步骤S604。
当可用内存低于或等于预设值X时,可以说明终端设备的可用内存不够充足。当应用从终端设备的前台切换到后台时,终端设备可以对该应用的快照进行压缩处理,则可以执行步骤S605。
其中,预设值X可以为终端设备可用内存较大的值,例如,预设值X可以为2G左右。可以理解的是,预设值X可以由终端设备自定义设置,具体的预设值X的值,本申请实施例不作限定。
S604、不压缩。
当终端设备的可用内存充足时,终端设备可以不对该应用的快照进行压缩处理,可以将快照保存到终端设备的内存中。
S605、可用内存是否高于预设值Y。
当终端设备的可用内存不够充足时,终端设备可以进一步确定对应用快照压缩时所采用的压缩方式。
当可用内存高于预设值Y时,可以说明终端设备的可用内存比较小,但是还可以支撑占用内存较大的应用启动运行。当应用从终端设备的前台切换到后台时,由于压缩方式二可以不需要经过压缩算法的处理,相较于压缩方式一来说,压缩方式二的算力较小,处理快照的速度更快。因此,终端设备可以采用压缩方式二对该应用的快照进行压缩处理,则可以执行步骤S606。
当可用内存低于或等于预设值Y时,可以说明终端设备的可用内存告急。当应用从终端设备的前台切换到后台时,由于压缩方式一的压缩比比较高,可以节省更多的终端设备的内存。因此,终端设备可以采用压缩方式一对该应用的快照进行压缩处理,则可以执行步骤S607。
其中,预设值Y可以为终端设备可用内存较大的值,例如,预设值Y可以为1G左右。可以理解的是,预设值Y可以由终端设备自定义设置,具体的预设值Y的值,本申请实施例不作限定。
S606、采用压缩方式二对快照进行压缩。
压缩方式二可以参照上述图5对应的实施例中的相关描述,不再赘述。
S607、采用压缩方式一对快照进行压缩。
压缩方式一可以参照上述图5对应的实施例中的相关描述,不再赘述。
下面通过具体的实施例对本申请实施例的方法进行详细说明。下面的实施例可以相互结合或独立实施,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图7示出了本申请实施例的一种内存处理方法。方法包括:
S701、第一时刻,第一应用从终端设备的前台向后台切换,终端设备得到第一应用的快照的内存大小为第一内存。
本申请实施例中,第一时刻可以为第一应用从终端设备的前台向后台切换时,终端设备为第一应用生成快照的时刻。可以理解的是,第一时刻时终端设备的可用内存充足,终端设备可以不对第一应用的快照进行压缩处理。
第一应用可以为终端设备上的任一应用,本申请实施例对具体的第一应用不作限定。
第一内存可以为终端设备为第一应用生成的快照所对应的内存大小。
S702、第二时刻,第二应用从终端设备的前台向后台切换,终端设备得到第二应用的快照的内存大小为第二内存。
本申请实施例中,第二时刻可以为第二应用从终端设备的前台向后台切换时,终端设备为第二应用生成快照的时刻。可以理解的是,相对于第一时刻,第二时刻时终端设备的可用内存不够充足,但是终端设备还可以支撑占用内存较大的应用启动运行,此时,终端设备可以对第二应用的快照进行压缩处理。
第二应用可以为终端设备上的任一应用,其中,第二应用与第一应用可以为相同的应用,也可以为不同的应用,本申请实施例对具体的第二应用不作限定。
第二内存可以为终端设备为第二应用生成的快照所对应的内存大小。其中,由于终端设备可以对第二应用的快照进行压缩处理,所以第二内存大小可以小于第一内存。
S703、第三时刻,第三应用从终端设备的前台向后台切换,终端设备得到第三应用的快照的内存大小为第三内存。
本申请实施例中,第三时刻可以为第三应用从终端设备的前台向后台切换时,终端设备为第三应用生成快照的时刻。可以理解的是,第三时刻时终端设备的可用内存告急,终端设备可以对第三应用的快照进行压缩处理。
第三应用可以为终端设备上的任一应用,其中,第三应用与第一应用或第二应用可以为相同的应用,也可以为不同的应用,本申请实施例对具体的第三应用不作限定。
第三内存可以为终端设备为第三应用生成的快照所对应的内存大小。其中,由于终端设备可以对第三应用的快照进行压缩处理,所以第三内存可以小于第一内存。
S704、其中,第一内存大于第二内存,第二内存大于第三内存,第一时刻时终端设备的可用内存大于第二时刻时终端设备的可用内存,第二时刻时终端设备的可用内存大于第三时刻时终端设备的可用内存。
本申请实施例中,当终端设备的内存不够充足时,终端设备可以对应用的快照进行压缩处理,从而为终端设备进行内存瘦身,节省终端设备的可用内存,提升终端设备的运行流畅性。
可选的,在图7对应的实施例的基础上,可以包括:第一应用的快照未进行压缩处理,第二应用的快照采用第一压缩方式进行压缩处理,第三应用的快照采用第二压缩方式进行压缩处理;其中,对于相同的压缩对象,第一压缩方式压缩压缩对象后的内存占用大于第二压缩方式压缩压缩对象后的内存占用。
本申请实施例中,第一压缩方式和第二压缩方式可以为任意的压缩方式,需要说明的是,第一压缩方式和第二压缩方式可以满足:第一压缩方式对压缩对象进行压缩后的内存占用大于第二压缩方式对压缩对象压缩后的内存占用。
其中,压缩对象可以为需要通过第一压缩方式或第二压缩方式进行压缩处理的对象。例如本申请实施例中,压缩对象可以为应用的快照。
示例性的,第一压缩方式可以为上述图5对应的实施例中使用图片格式转换进行压缩处理的压缩方法二,第二压缩方式可以为上述图5对应的实施例中使用压缩算法进行压缩处理的压缩方法一。具体的压缩方法一和压缩方法二的相关描述,在此不再赘述。
本申请实施例中,终端设备可以采取不同的压缩方式对应用的快照进行压缩,这样,终端设备可以根据自身内存的大小确定所采用的压缩算法,从而节省终端设备的内存空间,提升终端设备的运行流畅性,提升用户体验。
可选的,在图7对应的实施例的基础上,可以包括:第一应用的快照、第二应用的快照、以及第三应用的快照在未压缩前的内存大小一致。
本申请实施例中,第一应用、第二应用和第三应用可以是相同的应用,也可以是不同的应用。也就是说,终端设备对于不同的应用所生成的未压缩的快照大小可以是一致的。这样,终端设备可以对不同的应用的快照采用不同的压缩处理方式,从而可以根据终端设备的内存情况灵活处理应用快照所占用的内存大小,为终端设备节省内存空间。
可选的,在图7对应的实施例的基础上,终端设备可以包括第一屏幕和第二屏幕,第一应用、第二应用和第三应用均在第一屏幕中从前台向后台切换,或者,第一应用、第二应用和第三应用均在第二屏幕中从前台向后台切换。
本申请实施例中,第一屏幕和第二屏幕的大小可以相同,也可以不同。示例性的,折叠屏手机可以包括手机内屏和手机外屏,其中,手机内屏可以为第一屏幕,手机外屏可以为第二屏幕,或者手机外屏可以为第一屏幕,手机内屏可以为第二屏幕,本申请实施例不作限定。
由于应用的快照所占用的内存与终端设备的屏幕尺寸有关,因此,对于不同尺寸的屏幕,终端设备生成的应用快照内存大小不同。第一应用、第二应用和第三应用在同一个屏幕中进行前台向后台的切换,可以使得第一应用、第二应用和第三应用的快照内存大小具有对比性。
可选的,在图7对应的实施例的基础上,S701的第一应用从终端设备的前台向后台切换,终端设备得到第一应用的快照的内存大小为第一内存,可以包括:当第一应用从终端设备的前台向后台切换时,终端设备生成第一应用的快照,并获取终端设备的可用内存的大小;当终端设备的可用内存大于第一预设值时,终端设备不对第一应用的快照进行压缩处理,保存内存大小为第一内存的第一应用的快照。
本申请实施例中,终端设备获取可用内存大小的方法可以参照上述图6对应的实施例的S602中的相关描述,不再赘述。
第一预设值可以为终端设备可用内存较大的值,示例性的,第一预设值可以为上述图6对应的实施例的S603中的预设值X,具体第一预设值的取值可以参照预设值X的相关描述,不再赘述。
当终端设备的可用内存比较充足时,终端设备可以不对应用的快照进行压缩处理,这样,终端设备可以不需要进行应用快照的压缩和解压缩处理,节省算力。
可选的,在图7对应的实施例的基础上,S702的第二应用从终端设备的前台向后台切换,终端设备得到第二应用的快照的内存大小为第二内存,可用包括:当第二应用从终端设备的前台向后台切换时,终端设备生成第二应用的快照,并获取终端设备的可用内存的大小;当终端设备的可用内存小于或等于第一预设值,且终端设备的可用内存大于第二预设值时,终端设备采用第一压缩方式对第二应用的快照进行压缩处理,保存内存大小为第二内存的第二应用的快照。
本申请实施例中,第二预设值可以为终端设备可用内存较小的值,示例性的,第二预设值可以为上述图6对应的实施例的S605中的预设值Y,具体第二预设值的取值可以参照预设值Y的相关描述,不再赘述。
当终端设备的可用内存较小,但终端设备还可以支撑占用内存较大的应用启动运行时,终端设备可以采用第一压缩方式对应用的快照进行压缩处理。由于第一压缩方式的算力较小,处理快照的速度更快,这样,终端设备可以快速对应用快照的压缩和解压缩进行处理,减少终端设备的卡顿,提升用户体验。
可选的,在图7对应的实施例的基础上,终端设备采用第一压缩方式对第二应用的快照进行压缩处理,保存内存大小为第二内存的第二应用的快照之后,还可以包括:终端设备销毁第二应用的未压缩的快照。
本申请实施例中,终端设备可以通过销毁第二应用的未压缩的快照,从而释放硬件缓存中的内存,减少应用快照对终端设备内存空间的占用。
可选的,在图7对应的实施例的基础上,S703的第三应用从终端设备的前台向后台切换,终端设备得到第三应用的快照的内存大小为第三内存,可以包括:当第三应用从终端设备的前台向后台切换时,终端设备生成第三应用的快照,并获取终端设备的可用内存的大小;当终端设备的可用内存小于或等于第二预设值时,终端设备采用第二压缩方式对第三应用的快照进行压缩处理,保存内存大小为第三内存的第三应用的快照。
本申请实施例中,当终端设备的可用内存小于或等于第二预设值时,说明终端设备的可用内存告急,终端设备可以采用第二压缩方式对应用的快照进行压缩处理。其中,第二压缩方式的压缩比比较高,这样,可以节省更多的终端设备的内存。
可选的,在图7对应的实施例的基础上,终端设备采用第二压缩方式对第三应用的快照进行压缩处理,保存内存大小为第三内存的第三应用的快照之后,还可以包括:终端设备销毁第三应用的未压缩的快照。
本申请实施例中,终端设备可以通过销毁第三应用的未压缩的快照,从而释放硬件缓存中的内存,减少应用快照对终端设备内存空间的占用。
可选的,在图7对应的实施例的基础上,还可以包括:第四时刻,第二应用从终端设备的后台向前台切换,终端设备对压缩后的快照进行解压缩处理;第四时刻晚于第二时刻;终端设备在前台显示解压缩后的第二应用的快照对应的界面。
本申请实施例中,第四时刻可以为第二应用从终端设备的后台向前台切换时,终端设备对压缩后的快照进行解压缩处理,并显示快照对应界面的时刻。
可以理解的是,第五时刻,第三应用从终端设备的后台向前台切换,终端设备可以对压缩后的快照进行解压缩处理;其中,第五时刻晚于第三时刻;终端设备还可以在前台显示解压缩后的第三应用的快照对应的界面。
其中,具体终端设备对快照进行解压缩处理的过程可以参照上述图4对应的实施例中第二部分的相关描述,以及上述图5对应的实施例中的相关描述,不再赘述。具体终端设备前台显示应用快照对应的界面的过程可以参照上述图3对应的实施例中第二部分的获取快照的相关描述,不再赘述。
终端设备对压缩后的快照进行解压缩处理,可以得到原始的未经压缩的快照,从而可以在终端设备前台显示应用快照对应的界面,实现快照功能,进而提升用户体验。
可选的,在图7对应的实施例的基础上,终端设备对压缩后的快照进行解压缩处理之后,还可以包括:终端设备销毁第二应用的压缩后的快照。
可以理解的是,在终端设备对压缩后的第三应用的快照进行解压缩处理之后,终端设备可以销毁第三应用的压缩后的快照。
本申请实施例中,终端设备可以通过销毁应用的压缩后的快照,从而释放硬件缓存中的内存,减少应用快照对终端设备内存空间的占用。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的方法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对实现该方法的装置进行功能模块的划分,例如可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
如图8示为本申请实施例提供的一种芯片的结构示意图。芯片800包括一个或两个以上(包括两个)处理器801、通信线路802、通信接口803和存储器804。
在一些实施方式中,存储器804存储了如下的元素:可执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
上述本申请实施例描述的方法可以应用于处理器801中,或者由处理器801实现。处理器801可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器801中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器801可以是通用处理器(例如,微处理器或常规处理器)、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门、晶体管逻辑器件或分立硬件组件,处理器801可以实现或者执行本申请实施例中的公开的各处理相关的方法、步骤及逻辑框图。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。其中,软件模块可以位于随机存储器、只读存储器、可编程只读存储器或带电可擦写可编程存储器(electricallyerasable programmable read only memory,EEPROM)等本领域成熟的存储介质中。该存储介质位于存储器804,处理器801读取存储器804中的信息,结合其硬件完成上述方法的步骤。
处理器801、存储器804以及通信接口803之间可以通过通信线路802进行通信。
在上述实施例中,存储器存储的供处理器执行的指令可以以计算机程序产品的形式实现。其中,计算机程序产品可以是事先写入在存储器中,也可以是以软件形式下载并安装在存储器中。
本申请实施例还提供一种计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。例如,可用介质可以包括磁性介质(例如,软盘、硬盘或磁带)、光介质(例如,数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
本申请实施例还提供一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
作为一种可能的设计,计算机可读介质可以包括紧凑型光盘只读储存器(compactdisc read-only memory,CD-ROM)、RAM、ROM、EEPROM或其它光盘存储器;计算机可读介质可以包括磁盘存储器或其它磁盘存储设备。而且,任何连接线也可以被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,DSL或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘(CD),激光盘,光盘,数字通用光盘(digital versatile disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。
本申请实施例是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

Claims (7)

1.一种内存处理方法,其特征在于,所述方法包括:
第一时刻,第一应用从终端设备的前台向后台切换,所述终端设备得到所述第一应用的快照的内存大小为第一内存;
第二时刻,第二应用从所述终端设备的前台向后台切换,所述终端设备得到所述第二应用的快照的内存大小为第二内存;
第三时刻,第三应用从所述终端设备的前台向后台切换,所述终端设备得到所述第三应用的快照的内存大小为第三内存;
其中,所述第一内存大于所述第二内存,所述第二内存大于所述第三内存,所述第一时刻时所述终端设备的可用内存大于所述第二时刻时所述终端设备的可用内存,所述第二时刻时所述终端设备的可用内存大于所述第三时刻时所述终端设备的可用内存;
所述第一应用从所述终端设备的前台向后台切换,所述终端设备得到所述第一应用的快照的内存大小为第一内存,包括:
当所述第一应用从所述终端设备的前台向后台切换时,所述终端设备生成所述第一应用的快照,并获取所述终端设备的可用内存的大小;
当所述终端设备的可用内存大于第一预设值时,所述终端设备不对所述第一应用的快照进行压缩处理,保存内存大小为所述第一内存的所述第一应用的快照;
所述第二应用从所述终端设备的前台向后台切换,所述终端设备得到所述第二应用的快照的内存大小为第二内存,包括:
当所述第二应用从所述终端设备的前台向后台切换时,所述终端设备生成所述第二应用的快照,并获取所述终端设备的可用内存的大小;
当所述终端设备的可用内存小于或等于所述第一预设值,且所述终端设备的可用内存大于第二预设值时,所述终端设备采用第一压缩方式对所述第二应用的快照进行压缩处理,保存内存大小为所述第二内存的所述第二应用的快照;
所述第三应用从所述终端设备的前台向后台切换,所述终端设备得到所述第三应用的快照的内存大小为第三内存,包括:
当所述第三应用从所述终端设备的前台向后台切换时,所述终端设备生成所述第三应用的快照,并获取所述终端设备的可用内存的大小;
当所述终端设备的可用内存小于或等于所述第二预设值时,所述终端设备采用第二压缩方式对所述第三应用的快照进行压缩处理,保存内存大小为所述第三内存的所述第三应用的快照;
其中,对于相同的压缩对象,所述第一压缩方式压缩所述压缩对象后的内存占用大于所述第二压缩方式压缩所述压缩对象后的内存占用,所述第一压缩方式为使用图片格式转换进行压缩处理的压缩方法,所述图片格式转换为将内存大的快照格式调整为内存小的快照格式;所述第二压缩方式为使用压缩算法进行压缩处理的压缩方法,所述压缩算法为全量压缩;
所述方法还包括:
所述终端设备计算不同格式对应的快照所占用的内存空间,满足下述公式:其中,P为当前进行计算的快照,numBytes为所述快照占用内存空间的值,width为所述快照的宽度,height为所述快照的长度,bitsPerPixel为位图格式,不同的图片格式所对应的bitsPerPixel的值不同;
所述方法还包括:
所述终端设备根据文件描述符fd找到保存原始快照的硬件缓存;所述终端设备对所述原始快照进行压缩,并将压缩后的快照保存到压缩硬件缓存对应的dma_buf内存块中;其中,所述压缩硬件缓存调用ioctl接口和mmap接口向所述终端设备的直接内存访问DMA区域申请所述压缩硬件缓存对应的dma_buf内存块;所述终端设备将所述原始快照进行销毁,并调用unmap接口来释放硬件缓存对应的dma_buf内存块;其中,硬件缓存调用所述ioctl接口和所述mmap接口向所述直接内存访问DMA区域申请硬件缓存对应的dma_buf内存块。
2.根据权利要求1所述的方法,其特征在于,所述第一应用的快照、所述第二应用的快照、以及所述第三应用的快照在未压缩前的内存大小一致。
3.根据权利要求2所述的方法,其特征在于,所述终端设备包括第一屏幕和第二屏幕,所述第一应用、所述第二应用和所述第三应用均在所述第一屏幕中从前台向后台切换,或者,所述第一应用、所述第二应用和所述第三应用均在所述第二屏幕中从前台向后台切换。
4.根据权利要求1-3任一项所述的方法,其特征在于,还包括:
第四时刻,所述第二应用从所述终端设备的后台向前台切换,所述终端设备对压缩后的快照进行解压缩处理;所述第四时刻晚于所述第二时刻;
所述终端设备在前台显示解压缩后的所述第二应用的快照对应的界面。
5.根据权利要求4所述的方法,其特征在于,所述终端设备对压缩后的快照进行解压缩处理之后,还包括:所述终端设备销毁所述第二应用的压缩后的快照。
6.一种终端设备,其特征在于,包括:存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,以执行如权利要求1-5任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令被执行时,使得计算机执行如权利要求1-5任一项所述的方法。
CN202310029668.8A 2023-01-09 2023-01-09 一种内存处理方法及相关装置 Active CN115794413B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310029668.8A CN115794413B (zh) 2023-01-09 2023-01-09 一种内存处理方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310029668.8A CN115794413B (zh) 2023-01-09 2023-01-09 一种内存处理方法及相关装置

Publications (2)

Publication Number Publication Date
CN115794413A CN115794413A (zh) 2023-03-14
CN115794413B true CN115794413B (zh) 2024-05-14

Family

ID=85428822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310029668.8A Active CN115794413B (zh) 2023-01-09 2023-01-09 一种内存处理方法及相关装置

Country Status (1)

Country Link
CN (1) CN115794413B (zh)

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1901537A (zh) * 2005-07-22 2007-01-24 国际商业机器公司 自适应会话压缩管理方法、压缩管理器及会话管理***
CN105242987A (zh) * 2015-09-22 2016-01-13 浪潮(北京)电子信息产业有限公司 一种快照扩容的灾备方法、装置及***
CN106803860A (zh) * 2017-01-23 2017-06-06 努比亚技术有限公司 一种终端应用的存储处理方法和装置
CN106844032A (zh) * 2017-01-23 2017-06-13 努比亚技术有限公司 一种终端应用的存储处理方法和装置
CN108932163A (zh) * 2018-06-15 2018-12-04 奇酷互联网络科技(深圳)有限公司 内存管理方法、装置、可读存储介质及终端
CN109891390A (zh) * 2017-08-11 2019-06-14 华为技术有限公司 一种应用切换方法及装置
CN110023906A (zh) * 2017-10-13 2019-07-16 华为技术有限公司 一种压缩和解压处理器所占内存的方法及装置
CN110837343A (zh) * 2019-09-27 2020-02-25 华为技术有限公司 处理快照的方法、装置及终端
CN110895492A (zh) * 2019-12-11 2020-03-20 Oppo(重庆)智能科技有限公司 设备控制方法、装置、存储介质及电子设备
CN111526151A (zh) * 2020-04-28 2020-08-11 网易(杭州)网络有限公司 一种数据传输方法、装置、电子设备及存储介质
CN112433848A (zh) * 2020-11-10 2021-03-02 北京金山云网络技术有限公司 资源处理方法、装置、存储介质和缓存服务器
WO2022052677A1 (zh) * 2020-09-09 2022-03-17 华为技术有限公司 界面显示方法及电子设备
CN115357389A (zh) * 2022-08-22 2022-11-18 维沃移动通信有限公司 内存管理方法、装置及电子设备

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1901537A (zh) * 2005-07-22 2007-01-24 国际商业机器公司 自适应会话压缩管理方法、压缩管理器及会话管理***
CN105242987A (zh) * 2015-09-22 2016-01-13 浪潮(北京)电子信息产业有限公司 一种快照扩容的灾备方法、装置及***
CN106803860A (zh) * 2017-01-23 2017-06-06 努比亚技术有限公司 一种终端应用的存储处理方法和装置
CN106844032A (zh) * 2017-01-23 2017-06-13 努比亚技术有限公司 一种终端应用的存储处理方法和装置
CN109891390A (zh) * 2017-08-11 2019-06-14 华为技术有限公司 一种应用切换方法及装置
CN110023906A (zh) * 2017-10-13 2019-07-16 华为技术有限公司 一种压缩和解压处理器所占内存的方法及装置
CN108932163A (zh) * 2018-06-15 2018-12-04 奇酷互联网络科技(深圳)有限公司 内存管理方法、装置、可读存储介质及终端
CN110837343A (zh) * 2019-09-27 2020-02-25 华为技术有限公司 处理快照的方法、装置及终端
CN110895492A (zh) * 2019-12-11 2020-03-20 Oppo(重庆)智能科技有限公司 设备控制方法、装置、存储介质及电子设备
CN111526151A (zh) * 2020-04-28 2020-08-11 网易(杭州)网络有限公司 一种数据传输方法、装置、电子设备及存储介质
WO2022052677A1 (zh) * 2020-09-09 2022-03-17 华为技术有限公司 界面显示方法及电子设备
CN112433848A (zh) * 2020-11-10 2021-03-02 北京金山云网络技术有限公司 资源处理方法、装置、存储介质和缓存服务器
CN115357389A (zh) * 2022-08-22 2022-11-18 维沃移动通信有限公司 内存管理方法、装置及电子设备

Also Published As

Publication number Publication date
CN115794413A (zh) 2023-03-14

Similar Documents

Publication Publication Date Title
US11947974B2 (en) Application start method and electronic device
CN113254409B (zh) 文件共享方法、***及相关设备
CN112947947B (zh) 安装包的下载方法、分发方法、终端设备、服务器及***
US20230162317A1 (en) Picture Loading Method and Related Apparatus
WO2023202429A1 (zh) 垃圾回收的方法及电子设备
CN115119048B (zh) 一种视频流处理方法及电子设备
CN116700601B (zh) 内存优化方法、设备及存储介质
CN115794413B (zh) 一种内存处理方法及相关装置
CN114077529B (zh) 日志上传方法、装置、电子设备及计算机可读存储介质
CN113950033B (zh) 数据传输方法和设备
CN112783418B (zh) 一种存储应用程序数据的方法及移动终端
CN114253737A (zh) 电子设备及其内存回收方法、介质
WO2023169276A1 (zh) 投屏方法、终端设备及计算机可读存储介质
CN116737037B (zh) 界面显示中的栈管理方法及相关装置
CN116703689B (zh) 一种着色器程序的生成方法、装置和电子设备
CN113542315B (zh) 通信框架、业务事件处理方法及装置
CN116048829B (zh) 接口调用方法、设备及存储介质
CN116089320B (zh) 垃圾回收方法和相关装置
CN116795476B (zh) 一种删除壁纸的方法及电子设备
CN118320411A (zh) 数据处理方法及相关装置
CN117632446A (zh) 管理内存的方法和电子设备
CN118283026A (zh) 传输文件的方法及电子设备
CN117667506A (zh) 一种图库克隆方法、***和电子设备
CN116069224A (zh) 输入控制方法及电子设备
CN116795197A (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