CN116089320A - 垃圾回收方法和相关装置 - Google Patents
垃圾回收方法和相关装置 Download PDFInfo
- Publication number
- CN116089320A CN116089320A CN202211058553.3A CN202211058553A CN116089320A CN 116089320 A CN116089320 A CN 116089320A CN 202211058553 A CN202211058553 A CN 202211058553A CN 116089320 A CN116089320 A CN 116089320A
- Authority
- CN
- China
- Prior art keywords
- garbage collection
- memory
- terminal equipment
- value
- application program
- 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
Images
Classifications
-
- 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/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种垃圾回收方法和相关装置,方法包括:第一时刻,终端设备确定N个垃圾回收时间间隔满足第一预设条件,N为自然数,N个垃圾回收时间间隔为终端设备运行目标应用程序过程中得到的;终端设备调大执行垃圾回收的内存阈值;当目标应用程序占用的堆内存与调大后的执行垃圾回收的内存阈值之间的差值小于预设值时,执行垃圾回收;第二时刻,终端设备确定M个垃圾回收时间间隔满足第二预设条件,M为自然数,M个垃圾回收时间间隔为终端设备调大执行垃圾回收的内存阈值之后得到的;第二时刻晚于第一时刻;终端设备将调大后的执行垃圾回收的内存阈值调小。这样,减少了终端设备出现卡顿、电耗大的次数,提升了用户体验。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种垃圾回收方法和相关装置。
背景技术
垃圾回收(garbage collection,GC)是一种自动的存储器管理机制。例如,终端设备可以对内存堆中不再被访问的或者长时间没有使用的对象进行清除和回收,使得应用程序能够有足够的堆内存可以使用。
一些实现中,终端设备可以在应用程序启动的过程中进行GC,以使得应用程序能够有足够的堆内存使用。
但是,在应用程序启动后,终端设备仍然可能发生卡顿、电耗大等问题。
发明内容
本申请实施例提供一种垃圾回收方法和相关装置,能够改善应用程序运行过程中终端设备卡顿以及电耗大的问题,提升用户体验。
第一方面,本申请实施例提供一种垃圾回收方法,包括:第一时刻,终端设备确定N个垃圾回收时间间隔满足第一预设条件,N为自然数,N个垃圾回收时间间隔为终端设备运行目标应用程序过程中得到的;终端设备调大执行垃圾回收的内存阈值;当目标应用程序占用的堆内存与调大后的执行垃圾回收的内存阈值之间的差值小于预设值时,执行垃圾回收;第二时刻,终端设备确定M个垃圾回收时间间隔满足第二预设条件,M为自然数,M个垃圾回收时间间隔为终端设备调大执行垃圾回收的内存阈值之后得到的;第二时刻晚于第一时刻;终端设备将调大后的执行垃圾回收的内存阈值调小。
这样,在目标应用程序运行过程中,终端设备通过调大执行垃圾回收的内存阈值,减少了终端设备执行垃圾回收的次数,通过将调大后的执行垃圾回收的内存阈值调小,减少了因目标应用程序占用其他应用程序的内存的次数,改善了终端设备卡顿、电耗大的情况,提升了用户体验。
一种可能的实现方式中,终端设备确定N个垃圾回收时间间隔满足第一预设条件,包括:终端设备确定N个垃圾回收时间间隔中的S个垃圾回收时间间隔均小于或者等于时间间隔阈值,S为小于或等于N的自然数。这样,终端设备能够更加准确的确定第一时刻时终端设备频繁执行垃圾回收,使得终端设备调大执行垃圾回收的内存阈值。
一种可能的实现方式中,在第一时刻之前,方法还包括:终端设备获取目标应用程序在预设时长执行的X+1次垃圾回收对应的X个垃圾回收时间间隔,X为自然数;终端设备统计X个垃圾回收时间间隔在L个预设时间区间中分别出现的次数,得到L个预设时间区间与L个次数的对应关系;终端设备按照L个预设时间区间的顺序累加计算从第一个预设区间对应的次数到第Q个预设区间对应的次数,Q为小于L的变量;当累加从第一个预设时间区间对应的次数到第Q个预设区间对应的次数得到的累加值首次大于第一值时,终端设备将累加值首次大于第一值时所对应的预设时间区间中的时间值设置为时间间隔阈值,第一值为X与预设百分比的乘积。
这样,终端设备能够根据目标应用程序运行过程中执行垃圾回收的情况确定时间间隔阈值,使得不同终端设备、不同用户使用习惯的情况下,终端设备确定的时间间隔阈值不相同,提高了终端设备判断目标应用程序运行过程中频繁执行垃圾回收的准确度。
一种可能的实现方式中,终端设备确定M个垃圾回收时间间隔满足第二预设条件,包括:终端设备确定M个垃圾回收时间间隔中的Z个垃圾回收时间间隔均大于时间间隔阈值,Z为小于或等于M的自然数。这样,终端设备能够更加准确的确定第二时刻时终端设备不再频繁执行垃圾回收,使得终端设备进一步调整执行垃圾回收的内存阈值。
一种可能的实现方式中,终端设备调大执行垃圾回收的内存阈值,包括:终端设备将目标应用程序的空闲堆内存的上限调大至终端设备允许的上限最大值,以及目标应用程序的空闲堆内存的下限调大至终端设备允许的下限最大值;执行垃圾回收的内存阈值为空闲堆内存与目标应用程序占用的堆内存的和。这样,减少了终端设备执行垃圾回收的次数,减少了终端设备卡顿的次数,提升了用户体验。
一种可能的实现方式中,终端设备调大执行垃圾回收的内存阈值,包括:终端设备根据目标应用程序在第一时刻占用的堆内存,在第一对应关系中确定第二值和第三值;第一对应关系包括第二值、第三值以及第一堆内存范围,第二值大于第三值,目标应用程序在第一时刻占用的堆内存处于第一堆内存范围内;终端设备将目标应用程序的空闲堆内存的上限调大至第二值,以及目标应用程序的空闲堆内存的下限调大至第三值,执行垃圾回收的内存阈值为空闲堆内存与目标应用程序占用的堆内存的和。这样,使得终端设备调大目标应用程序的空闲堆内存的上限和目标应用程序的空闲堆内存的下限更加准确,更加符合目标应用程序运行过程中占用的堆内存的变化情况,减少了执行垃圾回收的次数,降低了终端设备运行目标应用程序运行过程中消耗的电量,并且减少了终端设备卡顿的次数。
一种可能的实现方式中,终端设备将调大后的执行垃圾回收的内存阈值调小,包括:终端设备将调大后的目标应用程序的空闲堆内存的上限和下限均调小。这样,终端设备不再频繁执行垃圾回收时,将调大后的执行垃圾回收的内存阈值调小,减少了空闲堆内存的浪费,能够改善因目标应用程序占用其他应用程序的内存而导致终端设备卡顿的情况。
第二方面,本申请实施例提供一种垃圾回收的装置,该垃圾回收的装置可以是终端设备,也可以是终端设备内的芯片或者芯片***。该垃圾回收的装置可以包括处理单元。处理单元用于实现第一方面或第一方面的任意一种可能的实现方式中与处理相关的任意方法。当该垃圾回收的装置是终端设备时,该处理单元可以是处理器。该垃圾回收的装置还可以包括存储单元,该存储单元可以是存储器。该存储单元用于存储指令,该处理单元执行该存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的一种方法。当该垃圾回收的装置是终端设备内的芯片或者芯片***时,该处理单元可以是处理器。该处理单元执行存储单元所存储的指令,以使该终端设备实现第一方面或第一方面的任意一种可能的实现方式中描述的一种方法。该存储单元可以是该芯片内的存储单元(例如,寄存器、缓存等),也可以是该终端设备内的位于该芯片外部的存储单元(例如,只读存储器、随机存取存储器等)。
示例性的,处理单元,用于在第一时刻,确定N个垃圾回收时间间隔满足第一预设条件,N为自然数,N个垃圾回收时间间隔为终端设备运行目标应用程序过程中得到的。
处理单元,还用于调大执行垃圾回收的内存阈值。
处理单元,还用于当目标应用程序占用的堆内存与调大后的执行垃圾回收的内存阈值之间的差值小于预设值时,执行垃圾回收。
处理单元,还用于在第二时刻,确定M个垃圾回收时间间隔满足第二预设条件,M为自然数,M个垃圾回收时间间隔为终端设备调大执行垃圾回收的内存阈值之后得到的;第二时刻晚于第一时刻。
处理单元,还用于将调大后的执行垃圾回收的内存阈值调小。
一种可能的实现方式中,处理单元,具体用于确定N个垃圾回收时间间隔中的S个垃圾回收时间间隔均小于或者等于时间间隔阈值,S为小于或等于N的自然数。
一种可能的实现方式中,处理单元,具体用于在第一时刻之前,获取目标应用程序在预设时长执行的X+1次垃圾回收对应的X个垃圾回收时间间隔,X为自然数;终端设备统计X个垃圾回收时间间隔在L个预设时间区间中分别出现的次数,得到L个预设时间区间与L个次数的对应关系;终端设备按照L个预设时间区间的顺序累加计算从第一个预设区间对应的次数到第Q个预设区间对应的次数,Q为小于L的变量;当累加从第一个预设时间区间对应的次数到第Q个预设区间对应的次数得到的累加值首次大于第一值时,终端设备将累加值首次大于第一值时所对应的预设时间区间中的时间值设置为时间间隔阈值,第一值为X与预设百分比的乘积。
一种可能的实现方式中,处理单元,具体用于确定M个垃圾回收时间间隔中的Z个垃圾回收时间间隔均大于时间间隔阈值,Z为小于或等于M的自然数。
一种可能的实现方式中,处理单元,具体用于将目标应用程序的空闲堆内存的上限调大至终端设备允许的上限最大值,以及目标应用程序的空闲堆内存的下限调大至终端设备允许的下限最大值;执行垃圾回收的内存阈值为空闲堆内存与目标应用程序占用的堆内存的和。
一种可能的实现方式中,处理单元,具体用于根据目标应用程序在第一时刻占用的堆内存,在第一对应关系中确定第二值和第三值;第一对应关系包括第二值、第三值以及第一堆内存范围,第二值大于第三值,目标应用程序在第一时刻占用的堆内存处于第一堆内存范围内;终端设备将目标应用程序的空闲堆内存的上限调大至第二值,以及目标应用程序的空闲堆内存的下限调大至第三值,执行垃圾回收的内存阈值为空闲堆内存与目标应用程序占用的堆内存的和。
一种可能的实现方式中,处理单元,具体用于将调大后的目标应用程序的空闲堆内存的上限和下限均调小。
第三方面,本申请实施例提供一种电子设备,包括处理器和存储器,存储器用于存储代码指令,处理器用于运行代码指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的垃圾回收方法。
第五方面,本申请实施例提供一种包括计算机程序的计算机程序产品,当计算机程序在计算机上运行时,使得计算机执行第一方面或第一方面的任意一种可能的实现方式中描述的垃圾回收方法。
第六方面,本申请提供一种芯片或者芯片***,该芯片或者芯片***包括至少一个处理器和通信接口,通信接口和至少一个处理器通过线路互联,至少一个处理器用于运行计算机程序或指令,以执行第一方面或第一方面的任意一种可能的实现方式中描述的垃圾回收方法。其中,芯片中的通信接口可以为输入/输出接口、管脚或电路等。
在一种可能的实现中,本申请中上述描述的芯片或者芯片***还包括至少一个存储器,该至少一个存储器中存储有指令。该存储器可以为芯片内部的存储单元,例如,寄存器、缓存等,也可以是该芯片的存储单元(例如,只读存储器、随机存取存储器等)。
应当理解的是,本申请的第二方面至第六方面与本申请的第一方面的技术方案相对应,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
图1为本申请实施例提供的一种应用程序的内存分布示意图;
图2为本申请实施例提供的一种应用程序占用的堆内存与空闲堆之间的关系示意图;
图3为本申请实施例提供的一种应用程序运行过程中占用的堆内存随时间的变化示意图;
图4为本申请实施例提供的一种终端设备的结构示意图;
图5为本申请实施例提供的一种终端设备的软件结构框图;
图6为本申请实施例提供的一种垃圾回收方法的流程示意图;
图7为本申请实施例提供的一种终端设备在预设时长内获得的垃圾回收时间间隔分布示意图;
图8为本申请实施例提供的一种确定时间间隔阈值的流程示意图;
图9为本申请实施例提供的另一种垃圾回收方法的流程示意图;
图10为本申请实施例提供的一种控制设备的硬件结构示意图;
图11为本申请实施例提供的一种芯片的结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,以下,对本申请实施例中所涉及的部分术语和技术进行简单介绍:
1、垃圾回收:是指一种自动的存储器管理机制。当终端设备运行的应用程序占用的一部分内存空间不再被这个程序访问时,可以通过垃圾回收算法向终端设备的操作***归还这部分内存空间。
2、垃圾回收时间间隔:终端设备执行的两次垃圾回收中,第一次垃圾回收结束的时刻,与,第二次垃圾回收开始的时刻之间的时间间隔。
3、执行垃圾回收的内存阈值:当终端设备运行的应用程序占用的堆内存接近执行垃圾回收的内存阈值时,终端设备执行垃圾回收。一些实现中,执行垃圾回收的内存阈值还可以称为GC水线值等。
4、其他术语
在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一目标功能的界面和第二目标功能的界面是为了区分不同的响应界面,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,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可以是单个,也可以是多个。
本申请提供的提供的垃圾回收方法应用于应用程序运行过程中执行垃圾回收的场景中。在应用程序启动过程中,应用程序占用的堆内存可能会不断增加,可能出现频繁执行垃圾回收的情况。一些实现中,在应用程序启动过程中,当应用程序对应的堆剩余内存不足时,终端设备可以进行垃圾回收,以增大应用程序的堆剩余内存。当垃圾回收之后的对剩余内存依然不足时,终端设备可以对应用程序进行扩容,使得应用程序能够有足够的对内存使用。可以理解的是,因为应用程序启动过程中应用程序所需的内存是不断增加的,因此,在应用程序启动过程中,终端设备对应用程序扩容后,不会再调小应用程序的内存,此外,终端设备可以在应用程序扩容后调大应用程序的初始堆内存,以减少终端设备执行垃圾回收的次数。然而,在应用程序启动后,终端设备依然可能出现频繁执行垃圾回收的情况,导致终端设备卡顿、电耗大的情况。此外,若在应用程序运行过程中将应用程序的初始堆内存调大,由于应用程序占用的堆内存可能出现增大的情况,也可能出现减小的情况,因此,可能出现调大后的初始堆内存中的部分内存空间应用程序使用不到的情况,使得应用程序占用其他应用程序的内存,使得终端设备出现卡顿、电耗大的情况。
因此,在应用程序运行过程中,终端设备仍然可能发生卡顿、电耗大等问题,降低了用户体验。
基于此,本申请实施例提供了一种垃圾回收方法,目标应用程序运行过程中,终端设备在确定目标应用程序运行过程中的多个垃圾回收时间间隔满足第一预设条件时,调大执行垃圾回收的内存阈值,能够减少终端设备执行垃圾回收的次数。终端设备在确定目标应用程序运行过程中的多个垃圾回收时间间隔满足第二预设条件时,将调大后的执行垃圾回收的内存阈值调小,减少目标应用程序占用其他应用程序内存的次数。因此,本申请提供的垃圾回收方法能够改善终端设备在运行目标应用程序过程中发生卡顿、电耗大等问题,提升了用户体验。
其中,终端设备执行垃圾回收释放的内存为终端设备为应用程序分配的内存的一部分,图1为本申请实施例提供的一种应用程序的内存分布示意图。在图1中,最大堆内存为终端设备为应用程序分配的内存,该最大堆内存中包括内存A、内存B以及内存C。其中,内存A为应用程序占用的堆内存,内存B为应用程序的空闲堆内存,内存C为除占用的堆内存和空闲堆内存之外的剩余堆内存。在图1的示意图中,应用程序对应的执行垃圾回收的内存阈值可以为应用程序占用的堆内存和应用程序的空闲堆内存的和。
可以理解的是,应用程序的空闲堆内存有最大值和最小值,且在应用程序运行过程中,应用程序的空闲堆内存的大小与应用程序的堆内存利用率和应用程序占用的堆内存有关。其中,应用程序的空闲堆内存、堆内存利用率以及占用的堆内存之间满足下述公式:
示例性的,图2为本申请实施例提供的一种应用程序占用的堆内存与空闲堆之间的关系示意图。根据图2可知,应用程序占用的堆内存小于或者等于a时,应用程序的空闲堆内存为空闲堆内存的最小值,应用程序占用的堆内存处于a-b范围内时,应用程序的空闲堆内存与空闲堆内存呈正相关,应用程序占用的堆内存大于或者等于b时,应用程序的空闲堆内存为空闲堆内存的最大值。
基于上述图1和图2所示,在应用程序运行过程中,若应用程序占用的堆内存出现频繁增大的情况,可能导致终端设备频繁执行垃圾回收,以回收应用程序占用的堆内存中不再被访问的或者长时间没有使用的对象,释放应用程序占用的堆内存,使得应用程序有足够的内存运行。
示例性的,图3为本申请实施例提供的一种应用程序运行过程中占用的堆内存随时间的变化示意图。根据图3所示,应用程序运行过程中,应用程序占用的堆内存接近GC水线值时,终端设备可以执行垃圾回收,且在终端设备执行垃圾回收之后,应用程序占用的堆内存减少。如图3所示,在应用程序运行5秒的时长内,终端设备执行了9次垃圾回收,且每两次垃圾回收之间的时间间隔均较短。由于执行垃圾回收需要一定的时间且可能占用终端设备的内存,因此,在图3所示的情况下,终端设备可以确定出现频繁执行垃圾回收的情况,可能导致终端设备出现卡顿、电耗大的情况。
根据上述图1-图3所示,当终端设备频繁执行垃圾回收时,终端设备可以调大执行垃圾回收的内存阈值,在一定程度上减少执行垃圾回收的次数,改善应用程序运行过程中,终端设备卡顿、电耗大的情况。
可以理解的是,在调大执行垃圾回收的内存阈值之后,可能出现终端设备不再频繁执行垃圾回收的情况,此时,终端设备可以将调大后的执行垃圾回收的内存阈值调小,减少出现应用程序占用其他应用程序的内存的次数,改善应用程序运行过程中,终端设备卡顿、电耗大的情况。
可以理解的是,本申请实施例的终端设备也可以为任意形式的电子设备,例如,电子设备可以包括具有图像处理功能的手持式设备、车载设备等。例如,一些电子设备为:手机(mobile phone)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备(mobile internetdevice,MID)、可穿戴设备,虚拟现实(virtual reality,VR)设备、增强现实(augmentedreality,AR)设备、工业控制(industrial control)中的无线终端、无人驾驶(selfdriving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的无线终端、蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、无线本地环路(wireless localloop,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操作***等。该应用层包含浏览器、通讯录、文字处理软件、即时通信软件等应用。
示例性的,图4为本申请实施例提供的一种终端设备的结构示意图。
终端设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,指示器192,摄像头193,以及显示屏194等。
可以理解的是,本申请实施例示意的结构并不构成对终端设备的具体限定。在本申请另一些实施例中,终端设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。处理器110中还可以设置存储器,用于存储指令和数据。示例性的,处理器110中可以包括时间间隔阈值的确定模块,频繁执行垃圾回收的检测模块,以及频繁执行垃圾回收的处理模块。
可以理解的是,时间间隔阈值的确定模块可以用于确定垃圾回收的时间间隔阈值,该时间间隔阈值可以用于判断终端设备是否频繁执行垃圾回收。频繁执行垃圾回收的检测模块,可以根据时间间隔阈值判断终端设备是否频繁执行垃圾回收。频繁执行垃圾回收的处理模块可以用于将执行垃圾回收的内存阈值调大,以及,将调大后的执行垃圾回收的内存阈值调小。
在目标应用程序运行过程中,终端设备可以通过处理器110调大执行垃圾回收的时间阈值以及将调大后的执行垃圾回收的时间阈值调小。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为终端设备充电,也可以用于终端设备与***设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。电源管理模块141用于连接充电管理模块140与处理器110。
终端设备的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。终端设备中的天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。
移动通信模块150可以提供应用在终端设备上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。
无线通信模块160可以提供应用在终端设备上的包括无线局域网(wirelesslocalarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星***(global navigation satellite system,GNSS),调频(frequencymodulation,FM)等无线通信的解决方案。
终端设备通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。
显示屏194用于显示图像,视频等。显示屏194包括显示面板。在一些实施例中,终端设备可以包括1个或N个显示屏194,N为大于1的正整数。示例性的,显示屏194可以用户显示本申请中目标应用程序的运行界面。
终端设备可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
摄像头193用于捕获静态图像或视频。在一些实施例中,终端设备可以包括1个或N个摄像头193,N为大于1的正整数。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端设备的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。
终端设备可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。终端设备可以通过扬声器170A收听音乐,或收听免提通话。受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。
麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。本申请实施例中,终端设备可以基于麦克风170C接收用于唤醒终端设备的声音信号,并将声音信号转换为可以进行后续处理的电信号,该终端设备可以拥有至少一个麦克风170C。
传感器模块180可以包括下述一种或多种传感器,例如:压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,或骨传导传感器等(图4中未示出)。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。终端设备可以接收按键输入,产生与终端设备的用户设置以及功能控制有关的键信号输入。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
终端设备100的软件***可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构,等。本申请实施例以分层架构的Android***为例,示例性说明终端设备100的软件结构。
图5为本申请实施例提供的一种终端设备的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android***分为五层,从上至下分别为应用层,应用程序框架层,安卓运行时(Android runtime)和***库,硬件抽象层,以及内核层。
应用层可以包括一系列应用程序包。如图5所示,应用程序包可以包括电话、邮箱、日历、相机等应用程序。
应用程序框架层为应用层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图5所示,应用程序框架层可以包括窗口管理器、活动管理器、位置管理器、包管理器、通知管理器、资源管理器、电话管理器、视图***和帧率决策管理器等。
窗口管理器(window manager service,WMS)用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
活动管理器用于管理各个应用程序的生命周期以及导航回退功能。负责Android的主线程创建,各个应用程序的生命周期的维护。
位置管理器用于为应用程序提供位置服务,包括查询上一个已知位置、注册和注销来自某个周期性的位置更新等。
包管理器用于***内的程序管理,例如:应用程序安装、卸载和升级等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在***顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,终端设备振动,指示灯闪烁等。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
电话管理器用于管理移动设备功能,包括:手机通话状态、获取电话信息(设备、sim卡、网络信息),监听电话状态以及调用电话拨号器拨打电话
视图***包括可视控件,例如显示文字的控件,显示图片的控件等。视图***可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
帧率决策管理器用于确定终端设备的屏幕刷新帧率,以及选取屏幕刷新帧率的切换方式。
Android runtime包括核心库和虚拟机。Android runtime负责安卓***的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用层和应用程序框架层运行在虚拟机中。虚拟机将应用层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。虚拟机中还运行有显示合成进程(例如,surfaceflinger)。显示合成进程用于控制图像的合成。
可以理解的是,虚拟机在执行垃圾回收时,可以判断垃圾回收时间间隔是否大于或等于时间间隔阈值,从而判断是否频繁执行垃圾回收。虚拟机频繁执行垃圾回收时,可以调大执行垃圾回收的内存阈值,并且在不频繁执行垃圾回收时,可以将调大后的执行垃圾回收的内存阈值调小。
示例性的,虚拟机还可以使用应用程序占用的堆,栈,以及线程等,获取应用程序运行过程中执行垃圾回收时的垃圾回收时间间隔,并根据垃圾回收时间间隔确定时间间隔阈值。
***库可以包括多个功能模块。例如:图像绘制模块、图像渲染模块、图像合成模块、函数库和媒体库等。
图像绘制模块用于二维或三维图像的绘制。图像渲染模块用于二维或三维图像的渲染。图像合成模块用于二维或三维图像的合成。
可能的实现方式中,应用通过图像绘制模块对图像进行绘制,然后应用通过图像渲染模块对绘制后的图像进行渲染,然后应用将渲染后的图像发送至显示合成进程的缓存队列中。每当Vsync到来时,显示合成进程(例如,surface flinger)从缓存队列中按顺序获取待合成的一帧图像,然后通过图像合成模块进行图像合成。
函数库提供C语言中所使用的宏、类型定义、字符串操作函数、数学计算函数以及输入输出函数等
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
硬件抽象层,可以包含多个库模块,库模块如可以为硬件配置模块(hwcomposer,HWC)、摄像头库模块等。Android***可以为设备硬件加载相应的库模块,进而实现应用程序框架层访问设备硬件的目的。设备硬件可以包括如电子设备中的LCD屏幕、摄像头等。
内核层是硬件和软件之间的层。内核层用于驱动硬件,使得硬件工作。内核层至少包含LCD/LED驱动、显示驱动、音频驱动、摄像头驱动和传感器驱动等。
硬件可以是音频设备、蓝牙设备、相机设备、传感器设备等。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
示例性的,图6为本申请实施例提供的一种垃圾回收方法的流程示意图。如图6所示,该垃圾回收方法包括如下步骤:
S601、第一时刻,终端设备确定N个垃圾回收时间间隔满足第一预设条件,N为自然数,N个垃圾回收时间间隔为终端设备运行目标应用程序过程中得到的。
在本申请实施例中,第一时刻为终端设备运行目标应用程序的任意时刻。例如,第一时刻可以为终端设备执行某次垃圾回收开始的时刻。第一预设条件可以为终端设备频繁执行垃圾回收对应的条件,终端设备通过确定N个垃圾回收时间间隔满足第一预设条件,确定终端设备频繁执行垃圾回收。
示例性的,终端设备可以确定N个垃圾回收时间间隔中的全部或者某几个较小时,确定终端设备在频繁执行垃圾回收。
S602、终端设备调大执行垃圾回收的内存阈值。
示例性的,根据上述图1-图2所示,终端设备可以通过调大目标应用程序的空闲堆内存的最大值和最小值,或者,可以通过调大目标应用程序的堆内存利用率,或者,可以将执行执行垃圾回收的内存阈值调大为某个预设的内存阈值,以实现调大执行垃圾回收的内存阈值。
S603、当目标应用程序占用的堆内存与调大后的执行垃圾回收的内存阈值之间的差值小于预设值时,执行垃圾回收。
在本申请实施例中,预设值可以为一个较小的值,使得当目标应用程序占用的堆内存接近执行垃圾回收的内存阈值时,终端设备执行垃圾回收。
S604、第二时刻,终端设备确定M个垃圾回收时间间隔满足第二预设条件,M为自然数,M个垃圾回收时间间隔为终端设备调大执行垃圾回收的内存阈值之后得到的;第二时刻晚于第一时刻。
在本申请实施例中,第二时刻可以为第一时刻之后,终端设备运行目标应用程序的任意时刻。第二预设条件为终端设备不频繁执行垃圾回收的条件。M个垃圾回收时间间隔为终端设备使用调大后的执行垃圾回收的内存阈值执行垃圾回收时获取的时间间隔。
可以理解的是,在目标应用程序运行过程中,可能出现目标应用程序占用的堆内存减小的情况,此时,执行垃圾回收的内存阈值不需要为较大的值。因此,终端设备确定M个垃圾回收时间间隔满足第二预设条件时,可以确定终端设备执行垃圾回收并不频繁。
示例性的,终端设备可以通过确定M个垃圾回收时间间隔中的全部或者某几个较大时,确定M个垃圾回收时间间隔满足第二预设条件,即确定终端设备执行垃圾回收并不频繁。
S605、终端设备将调大后的执行垃圾回收的内存阈值调小。
示例性的,终端设备可以通过调小目标应用程序在第二时刻的空闲堆内存的最大值和最小值,或者,可以通过调小目标应用程序的堆内存利用率,或者,可以将执行垃圾回收的内存阈值调小为某个预设的内存阈值,以实现将调大后的执行垃圾回收的内存阈值调小。
可以理解的是,可以将调大后的执行垃圾回收的内存阈值调小至调大前的值,使得当终端设备不频繁执行垃圾回收时,及时调小执行垃圾回收的内存阈值,能够减小目标应用程序占用其他应用程序内存出现的情况。
基于此,终端设备在确定频繁执行垃圾回收时,将执行垃圾回收的内存调大,并使用调大后的执行垃圾回收的内存阈值执行垃圾回收,减少了执行垃圾回收的次数。此外,终端设备在确定不频繁执行垃圾回收时,将调大后的执行垃圾回收的内存阈值调小,降低出现目标应用程序占用其他应用程序内存的次数。因此,本申请实施例提供的垃圾回收方法能够改善目标应用程序运行过程中终端设备出现卡顿、电耗大的情况,提升了用户体验。
可选的,在图6对应的实施例的基础上,终端设备确定N个垃圾回收时间间隔是否满足第一预设条件时,可以比较N个垃圾回收时间间隔中的每一个垃圾回收时间间隔与时间间隔阈值的大小。若终端设备确定N个垃圾回收时间间隔中的S个垃圾回收时间间隔均小于或者等于时间间隔阈值,则确定N个垃圾回收时间间隔满足第一预设条件。其中,S为小于或等于N的自然数。
其中,时间间隔阈值可以为终端设备在第一时刻之前确定的,时间间隔阈值可以与终端设备的型号、用户使用目标应用程序的行为习惯等有关。
例如,若终端设备确定连续的3个垃圾回收时间间隔均小于或者等于时间间隔阈值,或者,终端设备确定连续的5个垃圾回收时间间隔中的3个垃圾回收时间间隔均小于或者等于时间间隔阈值,则确定终端设备频繁执行垃圾回收。
这样,使得终端设备可以根据目标应用程序运行过程中得到的N个垃圾回收时间间隔准确的确定终端设备是否频繁执行垃圾回收。
可以理解的是,终端设备确定M个垃圾回收时间间隔是否满足第二预设条件时,可以比较M个垃圾回收时间间隔中的每一个垃圾回收时间间隔与时间间隔阈值的大小。若终端设备确定M个垃圾回收时间间隔中的Z个垃圾回收时间间隔均大于时间间隔阈值,则确定M个垃圾回收时间间隔满足第二预设条件。其中,Z为小于或等于M的自然数。
例如,若终端设备确定连续的4个垃圾回收时间间隔均大于时间间隔阈值,或者,终端设备确定连续7个垃圾回收时间间隔中的5个垃圾回收时间间隔均大于时间间隔阈值,则确定终端设备频繁执行垃圾回收。
这样,使得终端设备可以根据目标应用程序运行过程中得到的M个垃圾回收时间间隔准确的确定终端设备是否不再频繁执行垃圾回收。
可选的,在图6对应的实施例的基础上,终端设备调大目标应用程序的空闲堆内存的上限和目标应用程序的空闲堆内存的下限,以实现调大执行垃圾回收的内存阈值,可以存在以下两种可能的实现:
一种可能的实现中,终端设备可以将目标应用程序的空闲堆内存的上限调大至终端设备允许的上限最大值,以及目标应用程序的空闲堆内存的下限调大至终端设备允许的下限最大值。由于执行垃圾回收的内存阈值为空闲堆内存与目标应用程序占用的堆内存的和,因此,终端设备将目标应用程序的空闲堆内存的上限和下限均调大时,可以实现调大执行垃圾回收的内存阈值。
例如,第一时刻,目标应用程序的空闲堆内存的上限为8M,目标应用程序的空闲堆内存的下限为2M,终端设备允许的上限最大值为32M,终端设备允许的下限最大值为8M。当终端设备确定其频繁执行垃圾回收时,终端设备可以将目标应用程序的空闲堆内存的上限调大至为32M,以及将目标应用程序的空闲堆内存的下限调大至为8M。
这样,使得终端设备在使用调大后的执行垃圾回收的内存阈值执行垃圾回收时,减少了终端设备执行垃圾回收的次数,能够改善终端设备因频繁执行垃圾回收而出现的卡顿、电耗大的情况。
另一种可能的实现中,终端设备可以根据目标应用程序在第一时刻占用的堆内存,在第一对应关系中确定第二值和第三值。终端设备将目标应用程序的空闲堆内存的上限调大至第二值,以及目标应用程序的空闲堆内存的下限调大至第三值。其中,第一对应关系包括第二值、第三值以及第一堆内存范围,第二值大于第三值,目标应用程序在第一时刻占用的堆内存处于第一堆内存范围内。
可以理解的是,第一对应关系可以为终端设备在第一时刻之前预先设定的,且第一对应关系中还可以包括其他堆内存范围与其他第二值和其他第三值的对应关系。第二值、第三值分别与目标应用程序在第一时刻占用的堆内存呈正相关,使得终端设备可以根据目标应用程序在第一时刻占用的堆内存,确定出符合目标应用程序要求的第二值和第三值。
示例性的,第一对应关系包括多个第二值、多个第三值以及多个第一堆内存范围时,第一对应关系可参见下述表1所示:
表1
第一堆内存范围 | 第二值 | 第三值 |
0~32M | 16M | 4M |
32~128M | 32M | 8M |
128~256M | 48M | 16M |
大于256M | 64M | 32M |
这样,终端设备能够根据目标应用程序在第一时刻占用的堆内存对目标应用程序的空闲堆的下限和上限均调大,提升终端设备调大执行垃圾回收的内存阈值的精准度,使得调大后的执行垃圾回收的内存阈值更加符合目标应用程序的需求,减少了终端设备执行垃圾回收的次数。
在本申请实施例中,当终端设备不再频繁执行垃圾回收时,终端设备可以将调大后的执行垃圾回收的内存阈值调小。示例性的,终端设备可以将调大后的目标应用程序的空闲堆内存的上限和下限均调小可以存在以下两种可能的实现:
一种可能的实现中,终端设备可以将调大后的目标应用程序的空闲堆内存的上限调小至目标应用程序的空闲堆内存的上限的初始值,以及,将目标应用程序的空闲堆内存的下限调小至目标应用程序的空闲堆内存的下限的初始值。目标应用程序的空闲堆内存的上限的初始值和目标应用程序的空闲堆内存的下限的初始值可以为终端设备为目标应用程序设定的初始值。
可以理解的是,空闲堆内存的上限的初始值可以为终端设备第一时刻的空闲堆内存的最小值,也可以为终端设备为应用程序分配的上限初始值。空闲堆内存的下限的初始值可以为终端设备第一时刻的空闲堆内存的最小值,也可以为终端设备为应用程序分配的下限初始值。
另一种可能的实现中,终端设备可以根据目标应用程序在第二时刻占用的堆内存,在第二对应关系中确定第四值和第五值。终端设备将调大后的目标应用程序的空闲堆内存的上限调小至第四值,以及将调大后的目标应用程序的空闲堆内存的下限调小至第五值。其中,第二对应关系包括第四值、第五值以及第二堆内存范围,第四值大于第五值,目标应用程序在第二时刻占用的堆内存处于第二堆内存范围内。执行垃圾回收的内存阈值为空闲堆内存与目标应用程序占用的堆内存的和。
可以理解的是,第二对应关系中还可以包括其他第四值,其他第五值以及其他堆内存范围。第二对应关系可以与第一对应关系相同,可参见上述表1所示。
这样,当终端设备不再频繁执行垃圾回收时,终端设备将调大后的目标应用程序的空闲堆内存的上限和下限均调小,改善因调大目标应用程序的空闲堆内存而导致目标应用程序占用其他应用程序的内存空间的情况,使得终端设备卡顿、电耗大的情况得到改善。
在本申请实施例中,在第一时刻之前,终端设备可以确定时间间隔阈值,终端设备确定时间间隔阈值可以包括以下两种可能的实现:
一种可能的实现中,在第一时刻之前,终端设备可以获取目标应用程序在预设时长执行的X+1次垃圾回收对应的X个垃圾回收时间间隔;终端设备统计X个垃圾回收时间间隔在L个预设时间区间中分别出现的次数,得到L个预设时间区间与L个次数的对应关系;其中,X为自然数。进一步的,终端设备可以按照L个预设时间区间的顺序累加计算从第一个预设区间对应的次数到第Q个预设区间对应的次数,Q为小于L的变量。当累加从第一个预设时间区间对应的次数到第Q个预设区间对应的次数得到的累加值首次大于第一值时,终端设备将累加值首次大于第一值时所对应的预设时间区间中的时间值设置为时间间隔阈值,第一值为X与预设百分比的乘积。
目标应用程序的预设时长和对应的预设百分比可以为预先设定好的,且不同的应用程序对应的预设时长和预设百分比可以相同也可以不相同,本申请实施例对于预设时长和预设百分比不做具体限定。L个预设时间区间可以为根据X个垃圾回收时间间隔划分的,本申请实施例对此不做具体限定。
可以理解的是,预设百分比可以是通过目标应用程序的运行过程进行反复测试得到的,且该预设百分比可以与目标应用程序运行过程中的功耗情况有关。
示例性的,终端设备可以将累加值首次大于第一值时所对应的预设时间区间中的区间起始的时间值设置为时间间隔阈值,或者,将所对应的预设时间区间中的区间结束的时间值设置为时间间隔阈值,或者,将所对应的预设时间区间中的包含的垃圾回收时间间隔的平均值设置为时间间隔阈值,或者,可以将所对应的预设时间区间中的包含的垃圾回收时间间隔中最大值设置为时间间隔阈值,或者,可以将所对应的预设时间区间中的包含的垃圾回收时间间隔中最小值设置为时间间隔阈值,或者,可以将所对应的预设时间区间中的任意时间值设置为时间间隔阈值。本申请实施例对于时间间隔阈值不做具体限定。
例如,终端设备统计的目标应用程序运行12小时内对应的608个垃圾回收时间间隔和36个预设时间区间如图7所示。图7为本申请实施例提供的一种终端设备在预设时长内获得的垃圾回收时间间隔分布示意图。根据图7所示,每个时间区间的范围均为0.5s,且终端设备获得的垃圾回收时间间隔的分布为:存在68个垃圾回收时间间隔处于时间区间0~0.5s内,存在19个垃圾回收时间间隔处于时间区间0.5~1.0s内,存在22个垃圾回收时间间隔处于时间区间1.0~1.5s内,存在52个垃圾回收时间间隔处于时间区间1.5~2.0s内,存在74个垃圾回收时间间隔处于时间区间2.0~2.5s内,存在27个垃圾回收时间间隔处于时间区间2.5~3.0s内,存在26个垃圾回收时间间隔处于时间区间3.0~3.5s内,存在86个垃圾回收时间间隔处于时间区间3.5~4.0s内,存在122个垃圾回收时间间隔处于时间区间4.0~4.5s内,存在16个垃圾回收时间间隔处于时间区间4.5~5.0s内,存在15个垃圾回收时间间隔处于时间区间5.0~5.5s内,存在7个垃圾回收时间间隔处于时间区间5.5~6.0s内,存在9个垃圾回收时间间隔处于时间区间6.0~6.5s内,存在9个垃圾回收时间间隔处于时间区间6.5~7.0s内,存在1个垃圾回收时间间隔处于时间区间7.0~7.5s内,存在7个垃圾回收时间间隔处于时间区间7.5~8.0s内,存在4个垃圾回收时间间隔处于时间区间8.0~8.5s内,存在6个垃圾回收时间间隔处于时间区间8.5~9.0s内,存在4个垃圾回收时间间隔处于时间区间9.0~9.5s内,存在4个垃圾回收时间间隔处于时间区间9.5~10.0s内,存在1个垃圾回收时间间隔处于时间区间10.0~10.5s内,存在1个垃圾回收时间间隔处于时间区间10.5~11.0s内,存在2个垃圾回收时间间隔处于时间区间11.0~11.5s内,存在2个垃圾回收时间间隔处于时间区间11.5~12.0s内,存在2个垃圾回收时间间隔处于时间区间12.0~12.5s内,存在3个垃圾回收时间间隔处于时间区间12.5~13.0s内,存在2个垃圾回收时间间隔处于时间区间13.0~13.5s内,存在4个垃圾回收时间间隔处于时间区间13.5~14.0s内,存在2个垃圾回收时间间隔处于时间区间14.0~14.5s内,存在0个垃圾回收时间间隔处于时间区间14.5~15.0s内,存在1个垃圾回收时间间隔处于时间区间15.0~15.5s内,存在3个垃圾回收时间间隔处于时间区间15.5~16.0s内,存在1个垃圾回收时间间隔处于时间区间16.0~16.5s内,存在5个垃圾回收时间间隔处于时间区间16.5~17.0s内,存在0个垃圾回收时间间隔处于时间区间17.0~17.5s内,存在1个垃圾回收时间间隔处于时间区间17.5~18.0s内。
进一步的,假设预设百分比为20%,第一值为121.6。终端设备在确定时间间隔阈值时,可以按照图7所示的间隔对应的个数从左向右进行累加,累加值首次大于121.6对应的时间区间为1.5~2.0s,则终端设备可以在1.5~2.0s确定时间间隔阈值。
这样,使得不同的终端设备可以确定出不同的时间间隔阈值,且对于同一终端设备中的不同应用程序,终端设备确定的时间间隔阈值也不相同,提升了确定终端设备是否频繁执行垃圾回收的准确度。
另一种可能的实现中,终端设备可以获取X+1次垃圾回收对应的X个垃圾回收时间间隔,X个垃圾回收时间间隔为终端设备运行目标应用程序达到预设时长过程中得到的。其中,X为自然数。进一步的,终端设备将X个垃圾回收时间间隔从小到大的排序中的第Y个垃圾回收时间间隔确定为时间间隔阈值,其中,Y为自然数,Y为X与预设百分比的乘积。
例如,预设百分比为20%,终端设备获取到1000个垃圾回收时间间隔,则终端设备将1000个垃圾回收时间间隔从小到大排序中的第200个垃圾回收时间间隔确定为时间间隔阈值。
这样,使得终端设备能够更加准确的确定时间间隔阈值,以便于终端设备更加准确的确定是否存在频繁执行垃圾回收的情况。
示例性的,图8为本申请实施例提供的一种确定时间间隔阈值的流程示意图。根据图8所述,终端设备确定时间间隔时可以包括如下步骤:
S801、目标应用程序的堆向时间间隔阈值确定模块发送初始化指令。
示例性的,初始化指令用于指示时间间隔阈值确定模块进行初始化。
S802、目标应用程序的堆未在时间间隔阈值确定模块中读取到记录的垃圾回收时间间隔,以及时间间隔阈值。
可以理解的是,目标应用程序的堆未在时间间隔阈值确定模块中读取到记录的垃圾回收时间间隔,则表示终端设备并未确定时间间隔阈值。
S803、时间间隔阈值确定模块在任务管理器中创建记录垃圾回收时间间隔的任务。
示例性的,记录垃圾回收时间间隔的任务中可以包括记录垃圾回收时间间隔的个数以及记录垃圾回收时间间隔的时长等。
S804、任务管理器启动记录垃圾回收时间间隔的任务。
示例性的,任务管理器可以根据创建的记录垃圾回收时间间隔的任务中的启动条件启动记录垃圾回收时间间隔的任务,例如,任务管理器可以根据创建的记录垃圾回收时间间隔的任务中的开始时间启动记录垃圾回收时间间隔的任务。
可以理解的是,任务管理器启动记录垃圾回收时间间隔的任务之后,在终端设备执行垃圾回收时,任务管理器可以记录本次垃圾回收开始的时刻与上次垃圾回收结束的时刻之间的时间间隔,该时间间隔即为垃圾回收时间间隔。
S805、目标应用程序的堆执行垃圾回收。
S806、时间间隔阈值确定模块获取任务管理器记录的垃圾回收时间间隔。
S807、任务管理器在检测到创建的记录垃圾回收时间间隔的任务满足要求时,停止记录垃圾回收时间间隔的任务。
示例性的,任务管理器在确定记录的垃圾回收时间间隔的个数达到预设个数时,或者,在确定记录垃圾回收时间间隔的时长达到预设时长时,确定创建的记录垃圾回收时间间隔的任务满足要求。本申请实施例对于预设个数和预设时长不作限定。
S808、任务管理器通知时间间隔阈值确定模块记录垃圾回收时间间隔的任务结束。
S809、时间间隔阈值确定模块根据记录的垃圾回收时间间隔计算时间间隔阈值。
时间间隔阈值确定模块计算时间间隔阈值的方法可参见上述实施例所述的方法,本申请实施例不在赘述。
为了便于本申请实施例提供的垃圾回收方法,下面,对本申请实施例提供的垃圾回收方法进行详细的描述。图9为本申请实施例提供的另一种垃圾回收方法的流程示意图。根据图9所示,该垃圾回收方法可以包括如下步骤:
S901、在垃圾回收开始的时刻,终端设备判断垃圾回收时间间隔是否小于或等于时间间隔阈值。
示例性的,终端设备可以在每次垃圾回收开始时,判断垃圾回收时间间隔是否小于或等于时间间隔阈值。终端设备判断垃圾回收时间间隔是否小于或等于时间间隔阈值的方法可参见上述实施例终端设备确定N个垃圾回收时间间隔满足第一预设条件的方法,本申请实施例不再赘述。
可以理解的是,垃圾回收时间间隔小于或等于时间间隔阈值,则执行步骤S903-S904。若垃圾回收时间间隔大于时间间隔阈值,则执行步骤S906-S907。
S902、终端设备将频繁执行垃圾回收对应的第一参数加1。
示例性的,第一参数为小于或等于时间间隔阈值的垃圾回收时间间隔的个数。
S903、终端设备判断频繁执行垃圾回收对应的第一参数是否满足第一预设条件,且目标应用程序的空闲堆内存的下限和上限均未调大。
第一预设条件可参见上述实施例所述,本申请实施例不再赘述。
例如,终端设备可以判断是否存在3个连续的时间间隔均小于或等于时间间隔阈值。
示例性的,若是,则执行步骤S905,若否,则执行S909。
S904、终端设备将目标应用程序的空闲堆内存的下限和上限均调大。
终端设备将目标应用程序的空闲堆内存的下限和上限均调大可参见上述实施例中终端设备将执行垃圾回收的内存阈值调大的方法,本申请实施例不再赘述。
S905、终端设备将不频繁执行垃圾回收对应的第二参数加1。
示例性的,第二参数为大于时间间隔阈值的垃圾回收时间间隔的个数。
S906、终端设备判断不频繁执行垃圾回收对应的第二参数是否满足第二预设条件,且目标应用程序的空闲堆内存的下限和上限均调大。
第一预设条件可参见上述实施例所述,本申请实施例不再赘述。
例如,终端设备可以判断是否存在5个连续的时间间隔均大于时间间隔阈值。
一种可能的实现中,终端设备还可以判断将目标应用程序的空闲堆内存的下限和上限均调大之后,是否执行了两次完整垃圾回收(full garbage collection,Full GC),且目标应用程序的空闲堆内存的下限和上限均调大。其中,Full GC通常指终端设备执行的一次完整的垃圾回收,会对整个堆内存(包括老年代、年轻代以及元空间(metaspace)等)进行回收。
可以理解的是,若是,则执行步骤S908,若否,则执行S909。
S907、终端设备将调大后的目标应用程序的空闲堆内存的下限和上限均调小。
终端设备将调大后的目标应用程序的空闲堆内存的下限和上限均调小可参见上述实施例中终端设备将调大后的执行垃圾回收的内存阈值调小的方法,本申请实施例不再赘述。
基于此,本申请实施例提供的垃圾回收方法,终端设备可以在频繁执行垃圾回收时,将执行垃圾回收的内存阈值调大,在终端设备不再频繁执行垃圾回收时,将调大后的执行垃圾回收的内存阈值调小,改善了目标应用程序运行过程中,终端设备卡顿、电耗大的问题。
上面结合图1-图3以及图6-图9,对本申请实施例提供的方法进行了说明,为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的方法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对垃圾回收方法的装置进行功能模块的划分,例如可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分。
图10为本申请实施例提供的一种控制设备的硬件结构示意图,如图10所示,该控制设备包括处理器1001,通信线路1004以及至少一个通信接口(图10中示例性的以通信接口1003为例进行说明)。
处理器1001可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信线路1004可包括在上述组件之间传送信息的电路。
通信接口1003,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线局域网(wireless local area networks,WLAN)等。
可能的,该控制设备还可以包括存储器1002。
存储器1002可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路1004与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器1002用于存储执行本申请方案的计算机执行指令,并由处理器1001来控制执行。处理器1001用于执行存储器1002中存储的计算机执行指令,从而实现本申请实施例所提供的垃圾回收方法。
可能的,本申请实施例中的计算机执行指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器1001可以包括一个或多个CPU,例如图10中的CPU0和CPU1。
在具体实现中,作为一种实施例,控制设备可以包括多个处理器,例如图10中的处理器1001和处理器1005。这些处理器中的每一个可以是一个单核(single-CPU)处理器,也可以是一个多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
示例性的,图11为本申请实施例提供的一种芯片的结构示意图。芯片110包括一个或两个以上(包括两个)处理器1120和通信接口1130。
在一些实施方式中,存储器1140存储了如下的元素:可执行模块或者数据结构,或者他们的子集,或者他们的扩展集。
本申请实施例中,存储器1140可以包括只读存储器和随机存取存储器,并向处理器1120提供指令和数据。存储器1140的一部分还可以包括非易失性随机存取存储器(non-volatile random access memory,NVRAM)。
本申请实施例中,存储器1140、通信接口1130以及存储器1140通过总线***1110耦合在一起。其中,总线***1110除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。为了便于描述,在图11中将各种总线都标为总线***1110。
上述本申请实施例描述的方法可以应用于处理器1120中,或者由处理器1120实现。处理器1120可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1120中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1120可以是通用处理器(例如,微处理器或常规处理器)、数字信号处理器(digitalsignal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门、晶体管逻辑器件或分立硬件组件,处理器1120可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。
结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。其中,软件模块可以位于随机存储器、只读存储器、可编程只读存储器或带电可擦写可编程存储器(electricallyerasable programmable read only memory,EEPROM)等本领域成熟的存储介质中。该存储介质位于存储器1140,处理器1120读取存储器1140中的信息,结合其硬件完成上述方法的步骤。
在上述实施例中,存储器存储的供处理器执行的指令可以以计算机程序产品的形式实现。其中,计算机程序产品可以是事先写入在存储器中,也可以是以软件形式下载并安装在存储器中。
计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(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 (10)
1.一种垃圾回收方法,其特征在于,包括:
第一时刻,终端设备确定N个垃圾回收时间间隔满足第一预设条件,所述N为自然数,所述N个垃圾回收时间间隔为所述终端设备运行目标应用程序过程中得到的;
所述终端设备调大执行垃圾回收的内存阈值;
当所述目标应用程序占用的堆内存与调大后的执行垃圾回收的内存阈值之间的差值小于预设值时,执行垃圾回收;
第二时刻,所述终端设备确定M个垃圾回收时间间隔满足第二预设条件,所述M为自然数,所述M个垃圾回收时间间隔为所述终端设备调大执行垃圾回收的内存阈值之后得到的;所述第二时刻晚于所述第一时刻;
所述终端设备将调大后的执行垃圾回收的内存阈值调小。
2.根据权利要求1所述的方法,其特征在于,所述终端设备确定N个垃圾回收时间间隔满足第一预设条件,包括:
所述终端设备确定所述N个垃圾回收时间间隔中的S个垃圾回收时间间隔均小于或者等于时间间隔阈值,所述S为小于或等于所述N的自然数。
3.根据权利要求2所述的方法,其特征在于,在所述第一时刻之前,所述方法还包括:
所述终端设备获取所述目标应用程序在预设时长执行的X+1次垃圾回收对应的X个垃圾回收时间间隔,所述X为自然数;
所述终端设备统计所述X个垃圾回收时间间隔在L个预设时间区间中分别出现的次数,得到L个预设时间区间与L个次数的对应关系;
所述终端设备按照所述L个预设时间区间的顺序累加计算从第一个预设区间对应的次数到第Q个预设区间对应的次数,所述Q为小于所述L的变量;
当累加从第一个预设时间区间对应的次数到第Q个预设区间对应的次数得到的累加值首次大于第一值时,所述终端设备将累加值首次大于第一值时所对应的预设时间区间中的时间值设置为所述时间间隔阈值,所述第一值为X与预设百分比的乘积。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述终端设备确定M个垃圾回收时间间隔满足第二预设条件,包括:
所述终端设备确定所述M个垃圾回收时间间隔中的Z个垃圾回收时间间隔均大于所述时间间隔阈值,所述Z为小于或等于所述M的自然数。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述终端设备调大执行垃圾回收的内存阈值,包括:
所述终端设备将所述目标应用程序的空闲堆内存的上限调大至所述终端设备允许的上限最大值,以及所述目标应用程序的空闲堆内存的下限调大至所述终端设备允许的下限最大值;所述执行垃圾回收的内存阈值为所述空闲堆内存与所述目标应用程序占用的堆内存的和。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述终端设备调大执行垃圾回收的内存阈值,包括:
所述终端设备根据所述目标应用程序在第一时刻占用的堆内存,在第一对应关系中确定第二值和第三值;所述第一对应关系包括所述第二值、所述第三值以及第一堆内存范围,所述第二值大于所述第三值,所述目标应用程序在第一时刻占用的堆内存处于所述第一堆内存范围内;
所述终端设备将所述目标应用程序的空闲堆内存的上限调大至第二值,以及所述目标应用程序的空闲堆内存的下限调大至第三值,所述执行垃圾回收的内存阈值为所述空闲堆内存与所述目标应用程序占用的堆内存的和。
7.根据权利要求5或6所述的方法,其特征在于,所述终端设备将调大后的执行垃圾回收的内存阈值调小,包括:
所述终端设备将调大后的所述目标应用程序的空闲堆内存的上限和下限均调小。
8.一种终端设备,其特征在于,包括:处理器和存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,使得所述终端设备执行如权利要求1-7中任一项所述的方法。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的方法。
10.一种计算机程序产品,其特征在于,包括计算机程序,当所述计算机程序被运行时,使得计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211058553.3A CN116089320B (zh) | 2022-08-31 | 2022-08-31 | 垃圾回收方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211058553.3A CN116089320B (zh) | 2022-08-31 | 2022-08-31 | 垃圾回收方法和相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116089320A true CN116089320A (zh) | 2023-05-09 |
CN116089320B CN116089320B (zh) | 2023-10-20 |
Family
ID=86197981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211058553.3A Active CN116089320B (zh) | 2022-08-31 | 2022-08-31 | 垃圾回收方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116089320B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102890621A (zh) * | 2011-07-22 | 2013-01-23 | 弗森-艾奥公司 | 确定固态存储介质配置参数的装置、***和方法 |
US20130086132A1 (en) * | 2011-10-03 | 2013-04-04 | Oracle International Corporation | Time-based object aging for generational garbage collectors |
AU2017276313A1 (en) * | 2010-12-30 | 2018-01-18 | Foundation Medicine, Inc. | Optimization of multigene analysis of tumor samples |
CN108776614A (zh) * | 2018-05-03 | 2018-11-09 | 华为技术有限公司 | 存储块的回收方法和装置 |
CN109782944A (zh) * | 2018-12-11 | 2019-05-21 | 华为技术有限公司 | 一种触摸屏的响应方法及电子设备 |
CN110633113A (zh) * | 2019-09-02 | 2019-12-31 | 北京安云世纪科技有限公司 | 一种应用程序启动的方法及***、存储介质、移动设备 |
CN111368520A (zh) * | 2020-02-28 | 2020-07-03 | 中国平安人寿保险股份有限公司 | 一种电子表格的编辑方法及设备 |
CN112068771A (zh) * | 2020-08-17 | 2020-12-11 | Oppo广东移动通信有限公司 | 视频处理方法、视频处理装置、终端设备及存储介质 |
CN112559381A (zh) * | 2020-09-24 | 2021-03-26 | 北京航空航天大学 | 一种面向NVMe的IO确定性优化策略方法 |
CN113973189A (zh) * | 2020-07-24 | 2022-01-25 | 荣耀终端有限公司 | 显示内容的切换方法、装置、终端及存储介质 |
WO2022143446A1 (zh) * | 2021-01-04 | 2022-07-07 | 华为技术有限公司 | 内存释放方法及相关设备 |
-
2022
- 2022-08-31 CN CN202211058553.3A patent/CN116089320B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2019279918A1 (en) * | 2010-12-30 | 2020-01-16 | Foundation Medicine, Inc. | Optimization of multigene analysis of tumor samples |
AU2017276313A1 (en) * | 2010-12-30 | 2018-01-18 | Foundation Medicine, Inc. | Optimization of multigene analysis of tumor samples |
CN102890621A (zh) * | 2011-07-22 | 2013-01-23 | 弗森-艾奥公司 | 确定固态存储介质配置参数的装置、***和方法 |
US20130086132A1 (en) * | 2011-10-03 | 2013-04-04 | Oracle International Corporation | Time-based object aging for generational garbage collectors |
CN108776614A (zh) * | 2018-05-03 | 2018-11-09 | 华为技术有限公司 | 存储块的回收方法和装置 |
CN109782944A (zh) * | 2018-12-11 | 2019-05-21 | 华为技术有限公司 | 一种触摸屏的响应方法及电子设备 |
CN110633113A (zh) * | 2019-09-02 | 2019-12-31 | 北京安云世纪科技有限公司 | 一种应用程序启动的方法及***、存储介质、移动设备 |
CN111368520A (zh) * | 2020-02-28 | 2020-07-03 | 中国平安人寿保险股份有限公司 | 一种电子表格的编辑方法及设备 |
CN113973189A (zh) * | 2020-07-24 | 2022-01-25 | 荣耀终端有限公司 | 显示内容的切换方法、装置、终端及存储介质 |
CN112068771A (zh) * | 2020-08-17 | 2020-12-11 | Oppo广东移动通信有限公司 | 视频处理方法、视频处理装置、终端设备及存储介质 |
CN112559381A (zh) * | 2020-09-24 | 2021-03-26 | 北京航空航天大学 | 一种面向NVMe的IO确定性优化策略方法 |
WO2022143446A1 (zh) * | 2021-01-04 | 2022-07-07 | 华为技术有限公司 | 内存释放方法及相关设备 |
CN114721812A (zh) * | 2021-01-04 | 2022-07-08 | 华为技术有限公司 | 内存释放方法及相关设备 |
Non-Patent Citations (1)
Title |
---|
BRACE K S: "Efficient implementation of a BDD package", 《PROCEEDINGS OF THE 27TH ACM/IEEE DESIGN AUTOMATION CONFERENCE》, pages 40 - 45 * |
Also Published As
Publication number | Publication date |
---|---|
CN116089320B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220172717A1 (en) | Voice Interaction Method and Electronic Device | |
CN113553130B (zh) | 应用执行绘制操作的方法及电子设备 | |
CN113805797B (zh) | 网络资源的处理方法、电子设备及计算机可读存储介质 | |
CN116009999A (zh) | 卡片分享方法、电子设备及通信*** | |
CN115016706B (zh) | 一种线程的调度方法及电子设备 | |
WO2021104117A1 (zh) | 一种构建应用程序资源包的方法、构建装置及终端设备 | |
CN116048933B (zh) | 一种流畅度检测方法 | |
CN116070035B (zh) | 数据处理方法和电子设备 | |
CN114546511A (zh) | 插件管理方法、***及装置 | |
CN115333941B (zh) | 获取应用运行情况的方法及相关设备 | |
CN113709026B (zh) | 即时通信消息的处理方法、设备、存储介质和程序产品 | |
CN113495744A (zh) | 一种版本升级方法及相关装置 | |
WO2021042881A1 (zh) | 消息通知方法及电子设备 | |
CN115119048B (zh) | 一种视频流处理方法及电子设备 | |
CN116089320B (zh) | 垃圾回收方法和相关装置 | |
CN114828098B (zh) | 数据传输方法和电子设备 | |
CN117724863A (zh) | 一种目标信号处理方法和电子设备 | |
CN113641431A (zh) | 二维码的增强显示的方法和终端设备 | |
CN114489469A (zh) | 一种数据读取方法、电子设备及存储介质 | |
CN113642010A (zh) | 一种获取扩展存储设备数据的方法及移动终端 | |
CN116089368B (zh) | 文件搜索方法和相关装置 | |
CN116095230B (zh) | 应用程序推荐方法和终端设备、可读存储介质 | |
CN117009023B (zh) | 显示通知信息的方法及相关装置 | |
CN116662150B (zh) | 应用启动耗时检测方法及相关装置 | |
CN116266159B (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 |