CN116303110B - 一种内存垃圾的回收方法及电子设备 - Google Patents
一种内存垃圾的回收方法及电子设备 Download PDFInfo
- Publication number
- CN116303110B CN116303110B CN202310176154.5A CN202310176154A CN116303110B CN 116303110 B CN116303110 B CN 116303110B CN 202310176154 A CN202310176154 A CN 202310176154A CN 116303110 B CN116303110 B CN 116303110B
- Authority
- CN
- China
- Prior art keywords
- application
- memory
- value
- size
- garbage collection
- 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
- 238000000034 method Methods 0.000 title claims abstract description 188
- 238000004064 recycling Methods 0.000 title claims abstract description 126
- 238000011282 treatment Methods 0.000 claims abstract description 114
- 230000008569 process Effects 0.000 claims description 123
- 238000012545 processing Methods 0.000 claims description 42
- 238000009434 installation Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 238000005265 energy consumption Methods 0.000 abstract description 5
- 230000008859 change Effects 0.000 description 17
- 238000012360 testing method Methods 0.000 description 17
- 230000006870 function Effects 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000001960 triggered effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 230000036541 health Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 235000013399 edible fruits Nutrition 0.000 description 3
- 229920001621 AMOLED Polymers 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004091 panning Methods 0.000 description 2
- 239000002096 quantum dot Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013529 biological neural network Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002569 neuron Anatomy 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
- 238000005406 washing Methods 0.000 description 1
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
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种内存垃圾的回收方法及电子设备,涉及终端技术领域。解决电子设备内GC能耗高的问题。具体方案为:接收用户针对第一应用的第一操作;启动第一应用;其中,在第i次垃圾回收处理后第一应用占用的内存空间大小为第一内存数值,且第一应用占用的内存大小由第一内存数值达到第一预设阈值的情况下,针对第一应用进行第i+1次垃圾回收处理,其中,i为正整数;在第j次垃圾回收处理后第一应用占用的内存空间大小为第一内存数值,且第一应用占用的内存大小由第一内存数值达到第二预设阈值的情况下,针对第一应用进行第j+1次垃圾回收处理,其中,j为正整数;其中,在第一预设条件下,第一预设阈值与第二预设阈值不同。
Description
本申请是分案申请,原申请的申请号是202211466645.5,原申请日是2022年11月22日,原申请的全部内容通过引用结合在本申请中。
技术领域
本申请涉及终端技术领域,尤其涉及一种内存垃圾的回收方法及电子设备。
背景技术
应用程序运行时,需要占用电子设备中的内部存储器。应用程序在内部存储器中占用的存储区域又可称为内存空间。随着应用程序运行时间增加,应用程序所占用的内存空间会增加。同时,已占用的内存空间中也会出现该应用程序不再访问的闲置内存空间。
通常电子设备可以采用垃圾回收(garbage collection,GC)的方式,对闲置内存空间进行回收,从而提高电子设备中内存空间的利用效率。但是目前的内存垃圾回收方式存在着回收效果不好的问题。
发明内容
本申请实施例提供一种内存垃圾的回收方法及电子设备,用于解决电子设备内GC能耗高的问题。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,本申请实施例提供的一种内存垃圾的回收方法,应用于电子设备,所述方法包括:接收用户针对第一应用的第一操作,并响应于第一操作,启动第一应用。其中,第一应用在运行过程中经过多次垃圾回收处理。比如,在第i次垃圾回收处理后第一应用占用的内存空间大小为第一内存数值,且第一应用占用的内存大小由第一内存数值达到第一预设阈值的情况下,针对第一应用进行第i+1次垃圾回收处理,其中,i为正整数。在第j次垃圾回收处理后第一应用占用的内存空间大小为第一内存数值,且第一应用占用的内存大小由第一内存数值达到第二预设阈值的情况下,针对第一应用进行第j+1次垃圾回收处理,其中,j为正整数。
在一些场景下,比如,在满足第一预设条件的场景下,第一预设阈值与第二预设阈值不同。
示例性地,第一预设条件包括以下一项或多项的组合:电子设备在第i次垃圾回收处理时对应的CPU占用率与电子设备在第j次垃圾回收处理时对应的CPU占用率不同。第一应用在第一时间段内的垃圾回收次数与在第二时间段内的垃圾回收次数不同,其中,所述第一时间段是第i次垃圾回收处理完成之前的时间段,所述第二时间段是第j次垃圾回收处理完成之前的时间段,所述第一时间段与所述第二时间段的时间长度相同。所述电子设备在第i次垃圾回收处理时对应的设备温度与在第j次垃圾回收处理时对应的设备温度不相同。所述电子设备在第i次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第j次垃圾回收处理时对应的整机空闲内存大小不相同。电子设备在第i次垃圾回收处理时对应的亮灭屏状态与在第j次垃圾回收处理时对应的亮灭屏状态不同。
在本申请实施例中,电子设备可以根据应用程序的运行环境(如,CPU占用率、整机空闲内存、设备温度等)和运行状态(如,GC次数、亮灭屏状态等)的改变,动态调整该应用程序所对应的GC水线值,相较于传统方案中配置的GC水线值仅与实占内存空间大小有关,本申请方案通过灵活地在应用程序的不同运行阶段设置更加适配的水线值,能够降低由于频繁的GC对资源的占用,更有针对性的进行GC处理,减少对资源的占用,降低功耗。
在另一些场景下,例如,满足第二预设条件的场景下,第一预设阈值与所述第二预设阈值相同。第二预设条件包括以下所有项:所述电子设备在第i次垃圾回收处理时对应的CPU占用率与所述电子设备在第j次垃圾回收处理时对应的CPU占用率相同;所述第一应用在所述第一时间段内的垃圾回收次数与在所述第二时间段内的垃圾回收次数相同;所述电子设备在第i次垃圾回收处理时对应的设备温度与在第j次垃圾回收处理时对应的设备温度相同;所述电子设备在第i次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第j次垃圾回收处理时对应的整机空闲内存大小相同;所述电子设备在第i次垃圾回收处理时对应的亮灭屏状态与在第j次垃圾回收处理时对应的亮灭屏状态相同。
另外,第二预设条件与第一预设条件对应的条件项的类型相同,在第一预设条件涉及更多或更新的条件项的时候,第二预设条件也涉及更多或更新的条件项的时候。
在一些实施例中,电子设备在第i次垃圾回收处理时对应的CPU占用率包括以下任意一种:在第i次垃圾回收处理完成时所述第一应用占用的CPU占用率;在第i次垃圾回收处理完成时所述电子设备整机占用的CPU占用率;第三时间段内整机的平均CPU占用率,其中,所述第三时间段为第i次垃圾回收处理完成之前的时间段;所述第三时间段内所述第一应用的平均CPU占用率;所述电子设备在第j次垃圾回收处理时对应的CPU占用率包括以下任意一种:在第j次垃圾回收处理完成时所述第一应用占用的CPU占用率;在第j次垃圾回收处理完成时所述电子设备整机占用的CPU占用率;第四时间段内整机的平均CPU占用率,其中,所述第四时间段为第j次垃圾回收处理完成之前的时间段,所述第三时间段与第四时间段的时间长度相同;所述第四时间段内所述第一应用的平均CPU占用率。
在一些实施例中,所述第一应用是位于所述电子设备中预设的应用集合中的应用。示例性地,所述第一应用包括游戏应用、即时通讯应用、系统服务、社交应用、短视频应用、直播应用、会议应用、邮件应用。
在上述实施例中,电子设备仅对预设的应用集合中的应用,按照运行环境和运行情况的不同,动态调整GC水线进行GC处理,GC效率更高,灵活性更高。
在一些实施例中,所述电子设备中还包括第二应用,所述第二应用是位于所述预设的应用集合之外的应用,所述方法还包括:接收用户针对所述第二应用的第二操作;响应于所述第二操作,启动所述第二应用,其中,所述第二应用在运行过程中经过多次垃圾回收处理;在第r次垃圾回收处理后所述第二应用占用的内存空间大小为第二内存数值,在所述第二应用占用的内存大小由所述第二内存数值达到第三预设阈值时,针对所述第二应用进行第r+1次垃圾回收处理,其中,所述r为正整数;在第k次垃圾回收处理后所述第二应用占用的内存空间大小为第二内存数值,在所述第二应用占用的内存大小由所述第二内存数值达到第四预设阈值时,针对所述第二应用进行第k+1次垃圾回收处理,其中,所述k为正整数;其中,在任意场景下,所述第三预设阈值与所述第四预设阈值都相同。
比如,在第三预设条件指示的场景下,第三预设阈值与第四预设阈值相同,所述第三预设条件包括以下一项或多项:所述电子设备在第r次垃圾回收处理时对应的CPU占用率与所述电子设备在第k次垃圾回收处理时对应的CPU占用率不同;所述第二应用在第五时间段内的垃圾回收次数与在第六时间段内的垃圾回收次数不同,所述第五时间段是在第r次垃圾回收处理完成之前的时间段,所述第六时间段在第k次垃圾回收处理完成之前的时间段,所述第五时间段与所述第六时间段的时间长度相同;所述电子设备在第r次垃圾回收处理时对应的设备温度与在第k次垃圾回收处理时对应的设备温度不相同;所述电子设备在第r次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第k次垃圾回收处理时对应的整机空闲内存大小不相同;所述电子设备在第r次垃圾回收处理时对应的亮灭屏状态与在第k次垃圾回收处理时对应的亮灭屏状态不同。
再比如,在第四预设条件指示的场景下,第三预设阈值与第四预设阈值也相同,第四预设条件包括以下所有项:所述电子设备在第r次垃圾回收处理时对应的CPU占用率与所述电子设备在第k次垃圾回收处理时对应的CPU占用率相同;所述第二应用在所述第五时间段内的垃圾回收次数与在所述第六时间段内的垃圾回收次数相同;所述电子设备在第r次垃圾回收处理时对应的设备温度与在第k次垃圾回收处理时对应的设备温度相同;所述电子设备在第r次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第k次垃圾回收处理时对应的整机空闲内存大小相同;所述电子设备在第r次垃圾回收处理时对应的亮灭屏状态与在第k次垃圾回收处理时对应的亮灭屏状态相同。
可以理解的,第三预设条件与第四预设条件对应的条件项类型相同,在第四预设条件包括更多或更少的条件项时,第四预设条件也对应更多或更少的条件项。
在上述实施例中,对GC频次受使用情况影响不大的第二应用,采用传统的GC水线值配置方法,也即,采用固定的GC相关参数配置应用的GC水线,该方式不仅能够满足第二应用的GC需求,也能减少测试多组GC相关参数的工作量。
在一些实施例中,所述应用集合包括预先指定的应用程序,或者,所述应用集合包括应用使用频率、应用负载大小以及应用安装包大小中至少一项符合预设要求的应用程序。
第二方面,本申请实施例提供的一种内存垃圾的回收方法,应用于电子设备,所述方法包括:接收用户针对第三应用的第三操作;响应于所述第三操作,启动所述第三应用,其中,所述第三应用在运行过程中经过多次垃圾回收处理;在进行第m次垃圾回收之后,所述第三应用占用的内存空间大小为第三内存数值,在所述第三应用占用的内存大小由所述第三内存数值达到第五预设阈值时,针对所述第三应用进行第m+1次垃圾回收处理,其中,所述m为正整数;在进行第n次垃圾回收之后,第n次垃圾回收处理后所述第三应用占用的内存空间大小为第四内存数值,在所述第三应用占用的内存大小由所述第四内存数值达到第六预设阈值时,针对所述第三应用进行第n+1次垃圾回收处理,其中,所述n为正整数;其中,在所述第三内存数值与所述第四内存数值不相同的情况下,所述第五预设阈值对应的第一比例与所述第六预设阈值对应的第二比例不同,所述第一比例是所述第三内存数值与所述第五预设阈值之间的比值,所述第二比例是所述第四内存数值与所述第六预设阈值之间的比值。
在上述实施例中,在通过灵活地在应用程序的不同内存占用情况下,设置更加适配的水线值,能够降低由于频繁的GC对资源的占用,更有针对性的进行GC处理,减少对资源的占用,降低功耗。
在一些实施例中,电子设备中包括第四应用,所述方法包括:接收用户针对第四应用的第四操作;响应于所述第四操作,启动所述第四应用,其中,所述第四应用在运行过程中经过多次垃圾回收处理;在进行第a次垃圾回收之后,所述第四应用占用的内存空间大小为第三内存数值,在所述第四应用占用的内存大小由所述第三内存数值达到第七预设阈值时,针对所述第四应用进行第a+1次垃圾回收处理,其中,所述a为正整数;在进行第b次垃圾回收之后,所述第四应用占用的内存空间大小为第四内存数值,在所述第四应用占用的内存大小由所述第四内存数值达到第八预设阈值时,针对所述第四应用进行第b+1次垃圾回收处理,其中,所述b为正整数;其中,在所述第三内存数值与所述第四内存数值不相同的情况下,所述第七预设阈值对应的第三比例与所述第八预设阈值对应的第四比例相同,所述第三比例是所述第三内存数值与所述第七预设阈值之间的比值,所述第四比例是所述第四内存数值与所述第八预设阈值之间的比值;所述第三应用是位于所述电子设备中预设的应用集合中的应用,所述第四应用是位于所述应用集合之外的应用。
在一些实施例中,应用集合包括预先指定的应用程序,或者,所述应用集合包括应用使用频率、应用负载大小以及应用安装包大小中至少一项符合预设要求的应用程序,所述第三应用包括游戏应用、即时通讯应用、系统服务、社交应用、短视频应用、直播应用、会议应用、邮件应用,所述第四应用包括网约车应用、音乐应用、网银应用。
第三方面,本申请实施例提供的一种电子设备,电子设备包括一个或多个处理器和存储器;所述存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,所述一个或多个处理器,用于:接收用户针对第一应用的第一操作;响应于所述第一操作,启动所述第一应用,其中,所述第一应用在运行过程中经过多次垃圾回收处理;其中,在第i次垃圾回收处理后所述第一应用占用的内存空间大小为第一内存数值,且所述第一应用占用的内存大小由所述第一内存数值达到第一预设阈值的情况下,针对所述第一应用进行第i+1次垃圾回收处理,其中,i为正整数;在第j次垃圾回收处理后所述第一应用占用的内存空间大小为第一内存数值,且所述第一应用占用的内存大小由所述第一内存数值达到第二预设阈值的情况下,针对所述第一应用进行第j+1次垃圾回收处理,其中,j为正整数;其中,在第一预设条件下,所述第一预设阈值与所述第二预设阈值不同;所述第一预设条件包括以下一项或多项的组合:所述电子设备在第i次垃圾回收处理时对应的CPU占用率与所述电子设备在第j次垃圾回收处理时对应的CPU占用率不同;所述第一应用在第一时间段内的垃圾回收次数与在第二时间段内的垃圾回收次数不同,其中,所述第一时间段是第i次垃圾回收处理完成之前的时间段,所述第二时间段是第j次垃圾回收处理完成之前的时间段,所述第一时间段与所述第二时间段的时间长度相同;所述电子设备在第i次垃圾回收处理时对应的设备温度与在第j次垃圾回收处理时对应的设备温度不相同;所述电子设备在第i次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第j次垃圾回收处理时对应的整机空闲内存大小不相同;所述电子设备在第i次垃圾回收处理时对应的亮灭屏状态与在第j次垃圾回收处理时对应的亮灭屏状态不同。
在一些实施例中,在第二预设条件下,所述第一预设阈值与所述第二预设阈值相同,所述第二预设条件包括以下所有项:所述电子设备在第i次垃圾回收处理时对应的CPU占用率与所述电子设备在第j次垃圾回收处理时对应的CPU占用率相同;所述第一应用在所述第一时间段内的垃圾回收次数与在所述第二时间段内的垃圾回收次数相同;所述电子设备在第i次垃圾回收处理时对应的设备温度与在第j次垃圾回收处理时对应的设备温度相同;所述电子设备在第i次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第j次垃圾回收处理时对应的整机空闲内存大小相同;所述电子设备在第i次垃圾回收处理时对应的亮灭屏状态与在第j次垃圾回收处理时对应的亮灭屏状态相同。
在一些实施例中,所述电子设备在第i次垃圾回收处理时对应的CPU占用率包括以下任意一种:在第i次垃圾回收处理完成时所述第一应用占用的CPU占用率;在第i次垃圾回收处理完成时所述电子设备整机占用的CPU占用率;第三时间段内整机的平均CPU占用率,其中,所述第三时间段为第i次垃圾回收处理完成之前的时间段;所述第三时间段内所述第一应用的平均CPU占用率;所述电子设备在第j次垃圾回收处理时对应的CPU占用率包括以下任意一种:在第j次垃圾回收处理完成时所述第一应用占用的CPU占用率;在第j次垃圾回收处理完成时所述电子设备整机占用的CPU占用率;第四时间段内整机的平均CPU占用率,其中,所述第四时间段为第j次垃圾回收处理完成之前的时间段,所述第三时间段与第四时间段的时间长度相同;所述第四时间段内所述第一应用的平均CPU占用率。
在一些实施例中,所述第一应用是位于所述电子设备中预设的应用集合中的应用。
在一些实施例中,第一应用包括游戏应用、即时通讯应用、系统服务、社交应用、短视频应用、直播应用、会议应用、邮件应用。
在一些实施例中,所述电子设备中还包括第二应用,所述第二应用是位于所述预设的应用集合之外的应用,所述一个或多个处理器,用于:接收用户针对所述第二应用的第二操作;响应于所述第二操作,启动所述第二应用,其中,所述第二应用在运行过程中经过多次垃圾回收处理;在第r次垃圾回收处理后所述第二应用占用的内存空间大小为第二内存数值,在所述第二应用占用的内存大小由所述第二内存数值达到第三预设阈值时,针对所述第二应用进行第r+1次垃圾回收处理,其中,所述r为正整数;在第k次垃圾回收处理后所述第二应用占用的内存空间大小为第二内存数值,在所述第二应用占用的内存大小由所述第二内存数值达到第四预设阈值时,针对所述第二应用进行第k+1次垃圾回收处理,其中,所述k为正整数;其中,所述第三预设阈值与所述第四预设阈值在任何场景下都相同。
在一些实施例中,所述应用集合包括预先指定的应用程序,或者,所述应用集合包括应用使用频率、应用负载大小以及应用安装包大小中至少一项符合预设要求的应用程序。
第四方面,本申请实施例提供的一种电子设备,电子设备包括一个或多个处理器和存储器;所述存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,所述一个或多个处理器,用于:接收用户针对第三应用的第三操作;响应于所述第三操作,启动所述第三应用,其中,所述第三应用在运行过程中经过多次垃圾回收处理;在进行第m次垃圾回收之后,所述第三应用占用的内存空间大小为第三内存数值,在所述第三应用占用的内存大小由所述第三内存数值达到第五预设阈值时,针对所述第三应用进行第m+1次垃圾回收处理,其中,所述m为正整数;在进行第n次垃圾回收之后,第n次垃圾回收处理后所述第三应用占用的内存空间大小为第四内存数值,在所述第三应用占用的内存大小由所述第四内存数值达到第六预设阈值时,针对所述第三应用进行第n+1次垃圾回收处理,其中,所述n为正整数;其中,在所述第三内存数值与所述第四内存数值不相同的情况下,所述第五预设阈值对应的第一比例与所述第六预设阈值对应的第二比例不同,所述第一比例是所述第三内存数值与所述第五预设阈值之间的比值,所述第二比例是所述第四内存数值与所述第六预设阈值之间的比值。
在一些实施例中,所述电子设备中包括第四应用,所述一个或多个处理器,用于:接收用户针对第四应用的第四操作;响应于所述第四操作,启动所述第四应用,其中,所述第四应用在运行过程中经过多次垃圾回收处理;在进行第a次垃圾回收之后,所述第四应用占用的内存空间大小为第三内存数值,在所述第四应用占用的内存大小由所述第三内存数值达到第七预设阈值时,针对所述第四应用进行第a+1次垃圾回收处理,其中,所述a为正整数;在进行第b次垃圾回收之后,所述第四应用占用的内存空间大小为第四内存数值,在所述第四应用占用的内存大小由所述第四内存数值达到第八预设阈值时,针对所述第四应用进行第b+1次垃圾回收处理,其中,所述b为正整数;其中,在所述第三内存数值与所述第四内存数值不相同的情况下,所述第七预设阈值对应的第三比例与所述第八预设阈值对应的第四比例相同,所述第三比例是所述第三内存数值与所述第七预设阈值之间的比值,所述第四比例是所述第四内存数值与所述第八预设阈值之间的比值;所述第三应用是位于所述电子设备中预设的应用集合中的应用,所述第四应用是位于所述应用集合之外的应用。
在一些实施例中,所述应用集合包括预先指定的应用程序,或者,所述应用集合包括应用使用频率、应用负载大小以及应用安装包大小中至少一项符合预设要求的应用程序,所述第三应用包括游戏应用、即时通讯应用、系统服务、社交应用、短视频应用、直播应用、会议应用、邮件应用,所述第四应用包括网约车应用、音乐应用、网银应用。
第五方面,本申请实施例提供的一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行上述第一方面、第二方面及其可能的实施例中的方法。
第六方面,本申请提供一种计算机程序产品,当计算机程序产品在上述电子设备上运行时,使得电子设备执行上述第一方面、第二方面及其可能的实施例中的方法。
可以理解地,上述各个方面所提供的电子设备、计算机存储介质以及计算机程序产品均应用于上文所提供的对应方法,因此,其所能达到的有益效果可参考上文所提供的对应方法中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种应用程序占用内存空间的示例图;
图2为本申请实施例提供的GC示例图;
图3为本申请实施例提供的实占内存空间与预留内存空间之间的关系示例图;
图4为本申请实施例提供的电子设备的硬件结构示意图;
图5为本申请实施例提供的内存垃圾的回收方法的步骤流程图之一;
图6为本申请实施例提供的S102的子步骤流程图;
图7为本申请实施例提供的内存垃圾的回收方法的步骤流程图之二;
图8为本申请实施例提供的动态调整system_server的GC相关参数的示意图;
图9A为本申请实施例提供的第三时间段的示例图之一;
图9B为本申请实施例提供的第三时间段的示例图之二;
图10为本申请实施例提供的S105的子步骤流程图;
图11为本申请实施例提供的芯片系统的示例图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
电子设备中的存储器是所有应用程序的运行基础。其中,上述存储器可以分为内部存储器和外部存储器。上述外部存储器,可以用于存储各类已安装的应用程序的程序文件。上述内部存储器,可以用于提供应用程序运行期间所需占用的存储空间。
在一些实施例中,在应用程序运行时,电子设备可以在内部存储器中,给该应用程序划分一块独占的存储区域(又可称为内存空间)。显然,运行的应用程序越多,内部存储器的占用量越大。当然,电子设备中可用的内存空间有限,在上述内存空间都被占用的情况下,不仅其他未启动的应用程序不能正常启动,已启动的应用程序的运行效果也不佳。
在一些实施例中,电子设备可以采用GC算法,管理内部存储器的存储空间。上述GC算法是一种自动的存储器管理机制。在某个应用程序占用的内存空间不再被该应用程序访问,也即,分配给某个应用程序的内存空间中出现闲置部分时,可以利用该GC算法回收该闲置的内存空间,这样,被回收的内存空间可供其他应用程序使用。另外,上述利用该GC算法回收该闲置的内存空间又可简称为进行GC。
下面以针对应用a为例,介绍GC算法的使用场景:
首先,电子设备在应用a启动运行时,可以为应用a分配运行期间独占的内存空间。
示例性地,在应用a启动运行之后,电子设备可以确定应用a当前在内部存储器中实际占用的内存空间,简称实占内存空间。可以理解的,上述实占内存空间是应用a正在使用的内存空间。然后,电子设备可以依据应用a的实占内存空间,确定需分配给应用a的预留内存空间。可以理解地,上述预留内存空间是应用a可以使用但暂未使用的内存空间,上述预留内存空间的大小与实占内存空间的大小有关。另外,上述实占内存空间和预留内存空间均属于应用a独占的内存空间。当然,电子设备实际分配给应用a独占的内存空间可以略大于上述实占内存空间和预留内存空间之和,也可以正好等于实占内存空间和预留内存空间之和。
在应用a运行期间,应用a实际占用的内存空间会增加。在此场景下,应用a可以占用预留内存空间。可以理解地,上述预留内存空间中被占用的部分变为应用a对应的实占内存空间,这样,随着应用a对应的实占内存空间不断增加,对应的预留内存空间会变小。例如,图1所示,应用a启动运行时,实占内存空间为60M,预留内存空间为6M。在应用a运行一段时间之后,实占内存空间可以变为65M,预留内存空间可以变为1M。
显然,随着应用a运行时间的增加,预留内存空间会越来越少,实占内存空间会越来越大。在预留内存空间均被应用a占用之后,电子设备需要再次为应用a分配独占的内存空间。
在一些实施例中,电子设备在每次为应用a分配独占的内存空间之后,可以确定该应用a对应的GC水线值,该GC水线值是触发重新分配独占的内存空间的阈值。通常,上述GC水线值可以等于分配给应用a独占的内存空间大小,例如,等于实占内存空间和预留内存空间的大小之和。或者,略大于实占内存空间和预留内存空间的大小之和。
其次,在应用a运行期间,对应的实占内存空间会逐渐增大,在上述实占内存空间达到或超过对应的GC水线值,可以触发电子设备为应用a重新分配独占的内存空间。
另外,上述实占内存空间中会出现应用a不再访问(或者说不再使用)的内存空间,如称为闲置内存空间。
在电子设备为应用a重新分配独占的内存空间之前,电子设备可以通过GC算法将应用a对应的闲置内存空间进行回收。回收闲置空间的过程可参考相关技术,在此不再赘述。例如,图2所示,应用a对应的GC水线值为67M,在应用a的实占内存空间达到67M之后,如果此时上述实占内存空间中存在17M的闲置内存空间,那么经过GC算法处理之后,应用a所对应的实占内存空间会变为50M,也即,17M闲置内存空间被回收。
之后,电子设备可以依据GC处理后的实占内存空间,重新确定应用a所对应的预留内存空间。接上例,依据GC处理后,应用a对应的实占内存空间为50M,电子设备可以依据50M的实占内存空间,确定出5M的预留内存空间。这样,重新分配给应用a独占的内存空间不小于55M,比如,可以给应用a分配56M且独占的内存空间。应用a对应的GC水线值可以更新为56M。应用a独占的56M内存空间包括50M的实占内存空间和5M的预留内存空间。
如此循环,电子设备可以利用GC算法,有效地管理各个应用程序对内部存储器的占用。
另外,在上述分配应用a独占的内存空间的过程中,电子设备需要利用多项GC相关参数。上述GC相关参数包括独占空间上限值、最大预留限值、最小预留限值和空间利用率等之一或之间的组合。
其中,独占空间上限值是指可以给应用程序分配的独占内存空间的最大值,比如,独占空间上限值为512M,那么代表给单个应用程序分配的可独占的内存空间大小不超过512M。示例性地,针对轻量级的应用程序和大体积的应用程序的独占空间上限值可以不同。如,上述独占空间上限值包括上限值1(如,384M)和上限值2(如,512M)。上述上限值1是面向轻量级的应用程序的独占空间上限值。上述上限值2是面向大体积的应用程序的独占空间上限值。当然,开发者可以标记应用程序属于轻量级应用还是大体积应用,这样,安装该应用程序之后,电子设备可以根据该应用程序的类型(属于轻量级或大体积),确定其对应的独占空间上限值。
在一些示例中,如果应用a对应的实占内存空间大小超过对应的独占空间上限值,电子设备可以显示提醒信息,提示应用a存在内存占用异常的问题。
另外,上述空间利用率是用于在实占内存空间的基础上,计算预留内存空间的比例。换句话说,空间利用率可以表征实占内存空间与预留内存空间之间的关系。在依据实占内存空间计算预留内存空间时,电子设备需确保实占内存空间与计算出的预留内存空间之间满足预设条件,该预设条件与空间利用率存在关联。示例性地,将实占内存空间与计算出的预留内存空间之和称为内存空间1,那么实占内存空间与内存空间1之间的占比等于上述空间利用率时,确定满足预设条件。例如,在空间利用率为75%的场景下,如果实占内存空间的大小为75M,那么可以计算出预留内存空间的大小为25M,这样,实占内存空间与计算出的预留内存空间满足预设条件。
当然,在一些实施例中,计算出的预留内存空间与电子设备实际分配给该应用程序的预留内存空间可能不同。在上述实施例中,GC相关参数还可以包括最大预留限值、最小预留限值。上述最大预留限值指示可以给应用程序分配的最大的预留内存空间。上述最小预留限值指示可以给应用程序分配的最小的预留内存空间。比如,最大预留限值为8M时,如果依据实占内存空间和空间利用率,计算出的预留内存空间大于8M,则确定实际分配的预留内存空间的大小等于8M。比如,最小预留限值为2M时,如果依据实占内存空间和空间利用率,计算出的预留内存空间小于2M,则确定实际分配的预留内存空间的大小等于2M。
总之,空间利用率为0.75、最大预留限值为8M、最小预留限值为2M时,预留内存空间与实占内存空间之间的关系可以可参考图3。如图3所示,在GC处理之后,如果实占内存空间小于或等于第一阈值时,预留内存空间均为2M。如果实占内存空间大于或等于第二阈值时,预留内存空间均为8M。如果实占内存空间不小于第一阈值且不大于第二阈值时,实占内存空间和预留内存空间之间满足公式1,也即,其中,x代表实占内存空间,y代表预留内存空间,Δ代表空间利用率。
由于实占内存空间取值为第一阈值时,预留内存空间的取值固定为2,与此同时,实占内存空间与预留内存空间之间还需符合公式1。这样,如图3所示,在y取值为2、Δ取值为0.75时,可确定对应的实占内存空间(也即,第一阈值)的取值为兆。
同理,由于实占内存空间取值为第二阈值时,预留内存空间的取值固定为8,与此同时,实占内存空间与预留内存空间之间还需符合公式1,这样,如图3所示,在y取值为8、Δ取值为0.75时,可确定对应的实占内存空间(也即,第二阈值)的取值为兆。
另外,实占内存空间的取值介于第一阈值和第二阈值之间时,比如,图3所示,实占内存空间大小为10M的情况下,如果预留内存空间与实占内存空间之间要满足公式1,那么预留内存空间为兆。
显然,电子设备给应用程序分配独占的内存空间(含预留内存空间)时,其大小受GC相关参数的影响。另外,上述GC相关参数也会影响到应用程序的GC水线值的确认。在一些实施例中,电子设备中所有应用程序共用一套GC相关参数。
显然,对于重负载的应用程序(如,系统服务、前台运行的应用程序等),通过GC相关参数确定的GC水线值,对于该类应用程序而言较低,可能会导致该应用程序频繁进行GC,会导致对资源的占用增加,且导致电子设备的功耗增加。
示例性地,重负载的应用程序可以是指满足以下一条或多条特征的应用程序:
1)对应的安装包体积较大,如,对应的安装包体积大于设定的第一体积阈值。
2)单位时间新增的内存占用量大于第一内存阈值。
3)运行时占用的系统资源(计算资源和/或内存资源)大于第一预设负载阈值。
4)运行期间内存访问频率超过第一频率值。
对于轻负载的应用程序(如,时钟应用或后台不常用的应用程序),通过GC相关参数确定的GC水线值,对于该类应用程序而言较高,这样,该类应用程序长时间不能触发GC,该类应用所占的内存空间得不到有效的回收,导致常驻内存增加。另外,不同的第三方应用的GC表现差异较大,存在部分应用GC效率低下的现象。
可以理解地,轻负载的应用程序是指满足以下一条或多条特征的应用程序:
1)对应的安装包体积较小,如,对应的安装包体积小于设定的第二体积阈值,第一体积阈值大于第二体积阈值。
2)单位时间新增的内存占用量小于第二内存阈值,上述第一内存阈值大于所述第二内存阈值。
3)运行时占用的系统资源小于第二预设负载阈值,第一预设负载阈值大于第二预设负载阈值。
4)运行期间内存访问频率低于第二频率值。上述第一频率值大于第二频率值。
针对常驻内存过多的问题,电子设备可以进行主动GC。上述主动GC可以是在应用程序长时间未GC时(如,未执行GC的时间超过指定时长时),电子设备主动针对该应用程序进行GC。除了主动GC之外,电子设备还可以提供分代GC和全量GC等多种GC方式。
总之,在使用同一套GC相关参数的情况下,负载重的应用程序所启用的分代GC和全量GC的次数更多,主动GC的次数较少。轻负载的应用程序所启用的主动GC的次数更多。另外,主动GC也会造成电子设备的系统能耗的增加。其中,分代GC和全量GC是在应用程序占用的内存空间超过对应的GC水线值的情况,选择的GC算法。主动GC是在应用程序未被GC处理的时间过长的情况下,选择的GC算法。
为了改善上述问题,本申请实施例提供一种内存垃圾的回收方法,应用于电子设备。上述方法通过给不同的应用程序匹配不同的GC相关参数,也就可以给不同类型的应用程序配置不同的GC水线值,这种方式配置的GC水线值更具有针对性,与传统方案中设置统一的GC水线值相比,本申请方案通过灵活的为不同应用设置不同的水线值,能够降低由于频繁的GC对资源的占用,更有针对性的进行GC处理,减少对资源的占用,降低功耗。
另外,电子设备还可以在应用程序的不同运行阶段,采用不同的GC相关参数为该应用程序配置适配的GC水线值,这样,在应用程序的整个运行周期内,动态地对应用程序进行GC处理。灵活的GC处理方式,能够更加高效的管理被应用程序占用的资源。
示例性地,上述电子设备可以是手机、平板电脑、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备等,本申请实施例对该电子设备的具体形态不作特殊限制。
请参考图4,为本申请实施例提供的一种电子设备100的结构示意图。
如图4所示,电子设备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可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器和骨传导传感器等传感器。
可以理解的是,本实施例示意的结构并不构成对电子设备100的具体限定。在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像,视频等。该显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,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可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
下面结合附图,描述本申请实施例提供的内存垃圾的回收方法的实现细节。
在本申请实施例中,如图5所示,上述内存垃圾的回收方法包括:
S101,在应用程序1启动运行时,获取应用程序1的标识1。
其中,上述标识1可以唯一指示应用程序1。示例性地,上述标识1可以是应用程序1对应的应用名称。又示例性地,上述标识1也可以应用程序1对应的进程名称,也即,应用程序1运行时所创建的应用进程的名称。
在一些实施例中,标识1可以包括在应用程序1的应用配置文件中。如标识1由应用程序1的开发者写在应用程序1的应用配置文件中。其中,上述应用配置文件是归属于应用程序1的程序文件,如,可以包括应用程序1专属的可执行文件。可以理解地,电子设备创建应用程序1对应的应用进程时,需要解析应用程序1对应的应用配置文件。在解析对应的应用配置文件时,电子设备可以获取到对应的标识1。
S102,在标识1属于预配置列表时,查询标识1对应的GC相关参数1。
在一些实施例中,电子设备中包含一应用集合,该应用集合可以指示需要配置专属GC相关参数的所有应用程序。在一些实施例中,该应用集合可以是预配置列表,也可以是集成在系统文件内的应用名单,还可以是由标记有特定标记的应用程序组成的集合。其中,预配置列表和应用名单中可以包含应用程序的标识及该应用程序对应的专属GC相关参数。另外,在应用集合是由具有特定标记的应用程序组成的情况下,应用程序的程序文件中可携带对应的专属GC相关参数。
当然,本申请实施例对应用集合的存在形式不作限定,后续实施例中,主要以预配置列表为例进行描述。
在一些实施例中,应用集合可以由电子设备的系统开发人员配置,在系统开发人员未将新发布的应用程序添加到应用集合之前,比如,将新发布应用程序的应用标识和专属GC相关参数写入预配置列表之前,该新发布的应用程序不属于应用集合,也即,电子设备运行时,无法获取到新发布的应用程序所对应的专属GC相关参数。
另外,在一些实施例中,除了轻负载和重负载的应用程序之外的其他应用(如称为普通应用),采用统一的GC相关参数就可以得到不错的GC效果,可以不单独配置专属GC相关参数。也就是说,应用集合中可以不含此类普通应用。
例如,如果应用程序对应的安装包体积大小介于第一体积阈值和第二体积阈值之间,该应用程序也可以不配置到应用集合。可以理解地,在利用安装包体积划分轻负载应用程序和重负载应用程序时,轻负载应用程序的安装包体积小于第一体积阈值,重负载应用程序的安装包体积大于第二体积阈值,而既不属于轻负载应用程序,又不属于重负载应用程序的普通应用的安装包体积介于第一体积阈值和第二体积阈值之间。当然,上述第一体积阈值和第二体积阈值可以是根据大量已界定为轻负载或者重复杂的应用程序统计得到的经验值。再例如,如果应用程序在单位时间新增的内存占用量介于第一内存阈值和第二内存阈值之间,该应用程序也可以不配置到应用集合。可以理解地,在利用单位时间新增的内存占用量划分轻负载应用程序和重负载应用程序时,轻负载应用程序对应的单位时间新增的内存占用量小于第一内存阈值,重负载应用程序的单位时间新增的内存占用量大于第二内存阈值,而既不属于轻负载应用程序,又不属于重负载应用程序的普通应用程序,其单位时间新增的内存占用量介于第一内存阈值和第二内存阈值之间。当然,第一内存阈值和第二内存阈值也可以是根据大量已界定为轻负载或者重复杂的应用程序进行测试后得到的经验值。再例如,如果应用程序访问内存空间的频率基于第一频率值和第二频率值之间,该应用程序也可以不放到应用集合。可以理解地,在利用内存空间访问频率划分轻负载应用程序和重负载应用程序时,轻负载应用程序对应的内存空间访问频率小于第一频率值,重负载应用程序对应的内存空间访问频率大于第二频率值,而既不属于轻负载应用程序,又不属于重负载应用程序的普通应用,其内存空间访问频率介于第一频率值和第二频率值之间。当然,第一频率值和第二频率值是根据大量已界定为轻负载或者重复杂的应用程序进行测试后得到的经验值。
另外,应用使用频率不高,单次运行的平均时长较短,或者下载量较低的应用程序,也可以不放到该应用集合。可以理解的,评定应用使用频率是否高、平均使用时长是否短的方式可参考相关技术,比如,通过挖掘各应用程序的用户使用记录,得到界定应用使用频率高低的频率阈值,以及评定使用时间长短的时长阈值。至于用于判定下载量是否低的下载量阈值,可以通过将各应用程序的下载量进行聚类,得到对应的下载阈值。
总之,应用集合中包括系统开发人员指定的应用程序,也可以包括满足第一条件的应用程序。其中,上述第一条件可以包括多种类型的条件,也可以预先设定。示例性地,上述第一条件(或称为预设要求)可以是针对应用使用频率的条件、针对运行负载的条件、针对安装包大小的条件等中的至少一项。例如,上述针对应用使用频率的条件可以包括应用程序在指定周期(如一天)内应用使用频率大于频率阈值1或小于频率阈值2,频率阈值1大于频率阈值2。针对运行负载的条件可以包括应用程序运行期间,单位时间内访问内存空间的次数超过第一频率值或低于第二频率值。针对安装包大小的条件可以包括应用程序的安装包大小大于第一体积阈值或小于第二体积阈值等。另外,如果一个应用程序不满上述第一条件,系统开发人员也有权将其添加到该应用集合中。
在一些实施例中,上述预配置列表是应用集合在电子设备中的一种存在形式,该预配置列表可以是从系统配置文件1中,解析出的参数列表,该预配置列表包括多个应用标识和每个应用标识对应的GC相关参数。其中,上述多个标识可以指示多个应用程序,上述多个标识所指示的应用程序均为需要配置专属GC相关参数的应用。另外,上述系统配置文件1属于电子设备开机过程中需要解析的系统文件。当然,除了系统配置文件1之外,开机需要解析的系统文件还包括系统配置文件2,该系统配置文件2中携带普适于大部分应用程序的默认GC相关参数。
示例性地,如图6所示,上述S102可以包括S102-1和S102-2:
S102-1,电子设备可以解析系统配置文件1,得到预配置列表。
如图6所示,解析得到的预配置列表中包括:系统服务(system_server)、运动健康(health)、相机(camera)等标识,上述标识“system_server”指示系统服务应用,上述标识“health”指示运动健康应用,上述标识“camera”指示相机应用。也即,电子设备中的系统服务应用、运动健康应用以及相机应用均是选为需配置专属GC相关参数的应用。
在上述预配置列表中,标识“system_server”对应的GC相关参数为[8M 32M 0.5],也即,该GC相关参数中最小预留限值是8M,最大预留限值是32M,空间利用率是0.5。上述标识“health”对应的GC相关参数为[2M 8M 0.75],也即,该GC相关参数中最小预留限值是2M,最大预留限值是8M,空间利用率是0.75。上述标识“camera”对应的GC相关参数为[2M8M0.8],也即,该GC相关参数中最小预留限值是2M,最大预留限值是8M,空间利用率是0.8。
S102-2,在标识1与预配置列表中的标识相同时,依据预配置列表中与标识1对应GC相关参数,确定GC相关参数1。
如图6所示,在标识1为系统服务时,预配置列表中与标识1对应的GC相关参数包括[8M 32M 0.5]。这样,可以确定GC相关参数1中的最小预留限值是8M,最大预留限值是32M,空间利用率是0.5。
另外,GC相关参数1还可以包括独占空间上限值。其中,GC相关参数1对应的独占空间上限值可以与系统默认的GC相关参数(如称为GC相关参数2)中的独占空间上限值相同。可以理解地,GC相关参数2是适用于所有应用程序的通用GC相关参数,该GC相关参数2包括最小预留限值、最大预留限值、空间利用率及独占空间上限值等多项参数。电子设备可以在开机阶段,从系统配置文件2中,解析出上述GC相关参数2。上述GC相关参数2不属于预配置列表。
上述GC相关参数1是适用于系统服务应用的专属GC参数。另外,GC相关参数1与GC相关参数2之间存在差异,比如,对应的最小预留限值、最大预留限值、空间利用率中,至少存在一项不相同。
S103,根据GC相关参数1,为应用程序1分配独占的内存空间。
在一些实施例中,电子设备先确定应用程序1对应的应用进程实际占用的内存空间,也即,应用程序1对应的实占内存空间。然后,根据实占内存空间及GC相关参数1中的空间利用率、最大预留限值,确定应用程序1对应的预留内存空间。这样,根据实占内存空间和预留内存空间,可以确定出分配给应用程序1独占的内存空间。此时,可称该GC相关参数1是针对应用程序1的GC相关参数,或者,称为是应用程序1对应的GC相关参数。
例如,图6所示,应用程序1对应的应用进程已占用50M的情况下,根据空间利用率,计算出的预留内存空间为50M。在最大预留限值为32M的限制下,可以确定实际的预留内存空间为32M。这样,分配给应用程序1独占的内存空间包括50M的实占内存空间和32M的预留内存空间。
在一些示例中,分配给应用程序1独占的内存空间大小可以略大于82M,比如,可以是83M。在另一些示例中,分配给应用程序1独占的内存空间大小可以等于82M。
再例如,应用程序1对应的应用进程已占用20M的情况下,根据空间利用率,计算出的预留内存空间为20M。可以理解地,20M小于GC相关参数1中的最大预留限值(32M),且大于GC相关参数1中的最小预留限值(8M)。电子设备可以确定分配给应用程序1的预留内存空间为20M。这样,电子设备分配给应用程序1独占的内存空间包括20M的实占内存空间和20M的预留内存空间。
再例如,应用程序1对应的应用进程已占用6M的情况下,根据空间利用率,计算出的预留内存空间为6M。可以理解地,6M小于GC相关参数1中的最小预留限值。电子设备可以确定分配给应用程序1的预留内存空间等于上述最小预留限值(也即,8M)。这样,电子设备分配给应用程序1独占的内存空间包括6M的实占内存空间和8M的预留内存空间。
在确定出分配给应用程序1独占的内存空间之后,根据该独占的内存空间大小,确定应用程序1对应的GC水线值。示例性地,该GC水线值等于分配给应用程序1独占的内存空间的大小。接上例,在分配给应用程序1独占的内存空间的大小为82M时,确定应用程序1对应的GC水线值等于82M。
这样,应用程序1运行期间,实际占用的内存空间超过82M时,可以触发电子设备对该应用程序1进行GC。
在上述实施例中,针对特定应用程序(如,应用程序1),电子设备可以启用专属该应用程序的GC相关参数。其中,专属的GC相关参数可以是针对该特定应用程序的经验值。通过该专属GC相关参数,可以确定出与该特定应用程序适配的GC水线值。该GC水线值可以避免频繁触发GC,也可以避免长期无法触发GC。这样,可以有效减少电子设备的系统能耗。
在一些实施例中,可以将电子设备中常见的重负载应用程序和轻负载应用程序,配置为特定应用程序,然后,通过测试等方式,确定上述特定应用程序所对应的GC相关参数。示例性地,上述测试方式可以是:针对每个特定应用程序,尝试启用不同的GC相关参数,并记录该特定应用程序运行期间造成的能耗。这样,可以选出造成能耗最低的GC相关参数,作为该特定应用程序对应的专属GC相关参数。
在确定各特定应用程序及对应的专属GC相关参数之后,可以获取各特定应用程序对应的标识,并依据各个标识与专属GC相关参数,生成预配置列表对应的系统配置文件1,并将该系统配置文件1存储于电子设备。这样,预配置列表中既可以包括重负载的应用程序对应的标识和专属GC相关参数,也可以包括轻负载的应用程序对应的标识和专属GC相关参数。
在一些可能的实施例中,同一个特定应用程序可以包括多组专属GC相关参数。不同组的专属GC相关参数,适用于应用程序处于不同运行阶段的场景。也就是,电子设备可以根据应用程序的运行阶段变化,采用不同的GC相关参数为其配置GC水线值。示例性地,上述具有多组专属GC相关参数的应用程序。在一些实例中,该类应用程序不仅是应用集合中的应用程序,还可以是GC次数受使用情况影响较大的应用,比如,system server、社交应用(微博TM、微信TM等)、视频应用、购物应用、短视频应用、游戏应用、邮件应用等。可以理解的,上述具有多组GC相关参数的应用程序中可以含重负载应用,也可以含轻负载应用,本申请实施例对此不作限定。
在一些实施例中,电子设备可以根据应用程序的启用时长,确定该应用程序所处运行阶段,并为其启用适合该运行阶段的GC相关参数。
以属于应用b为例,该应用b的专属GC相关参数包括GC相关参数a1及GC相关参数a2。其中,GC相关参数a1适用于应用b的启动阶段。GC相关参数a2适用于应用b稳定运行阶段。
这样,电子设备在应用b的启动阶段,可以采用GC相关参数a1,为应用b分配独占的内存空间,以及确定对应的GC水线值。另外,电子设备在应用b进入稳定运行阶段,可以采用GC相关参数a1为应用b分配独占的内存空间,以及确定对应的GC水线值。
作为一种示例,可以利用应用b的运行时长区分该应用b属于启动阶段还是属于稳定运行阶段。比如,在应用b对应的运行时间不超过时长1(1分钟)时,确定应用b处于启动阶段。在对应的运行时间超过时长1,确定应用b处于稳定运行阶段。这样,预配置列表中可以包括如表1所示的部分:
表1
也就是,在应用b的运行时长小于1分钟的情况下,电子设备通过预配置列表,可确定GC相关参数a1是匹配的参数,可以利用GC相关参数a1为应用b分配独占的内存空间,以及确定对应的GC水线值。在应用b的运行时长不小于1分钟的情况下,电子设备通过预配置列表,可确定GC相关参数a2是匹配的参数,可以利用GC相关参数a2为应用b分配独占的内存空间,以及确定对应的GC水线值。
在另一些实施例中,电子设备还可以根据实时的系统资源的占用情况,确定与应用程序适配的GC相关参数。
示例性地,上述系统资源可以是计算资源,如,中央处理器(central processingunit,CPU)资源。可以理解的,应用程序处于不同运行阶段时,对应的CPU资源占用率也不同。这样,具有多组专属GC相关参数的应用程序可以对应多个CPU占用率区间,每个CPU占用率区间都对应一组专属GC相关参数。例如,应用c是具有多组专属GC相关参数的应用程序,那么预配置列表中还可以包括下表2所示的部分:
表2
其中,上述CPU占用率区间1、CPU占用率区间2、CPU占用率区间3是连续且不重叠的CPU占用率区间,不同的CPU占用率区间对应的GC相关参数不同,比如,CPU占用率区间1对应有GC相关参数b1,CPU占用率区间2对应有GC相关参数b2,CPU占用率区间3对应有GC相关参数b3。
这样,应用c运行时,电子设备可以根据当前CPU资源的占用率,确定所属的CPU占用率区间。然后,根据所属的CPU占用率区间,确定对应的专属GC相关参数。又示例性地,上述系统资源还可以是存储资源。类似于CPU资源的占用情况,应用程序处于不同运行阶段时,对应的内存占用量也不同。其中,上述内存占用量可以是指定时间段内应用程序实际占用的内存空间大小的平均值,其中,指定时间段为GC处理之前的时间段,该指定时间段的长度可以是预配置的固定值。另一些示例中,上述内存占用量也可以是执行GC处理之后,应用程序所占用的内存空间大小。
这样,具有多组专属GC相关参数的应用程序还可以对应多个内存大小区间,每个内存大小区间都对应一组专属GC相关参数。
另外,前述实施例中提到的CPU资源占用率可以是整机的CPU资源占用率,也可以是单个应用程序的CPU资源占用率。同样,上述内存占用量也可以是整机的内存占用量,也可以是单个应用程序的内存占用量。
在一些实施例中,系统级的程序(如,system server)可以采用整机的CPU资源占用率,评估system server所处的运行阶段(也即,确定所属的CPU占用率区间),然后,确定匹配的专属GC相关参数。当然,也可以采用整机的内存占用量,评估system server所处的运行阶段(也即,确定所属的内存大小区间),然后,确定匹配的专属GC相关参数。
下面以system server为例,介绍电子设备根据整机的CPU资源占用情况,确定system server所处运行阶段,并确定出适配当前运行阶段的GC相关参数的实现细节。
如图7所示,在system server正常运行之后,上述方法可以包括以下步骤:
S1,在电子设备开启CPU资源轮询的情况下,可以周期性地查询电子设备当前的CPU占用情况。
在一些实施例中,在每一个轮询周期内,电子设备都可以获取指示当前CPU占用情况的CPU资源占用率。其中,上述CPU资源占用率可以是整机的CPU资源占用率。
作为一种实现方式,电子设备可以通过访问proc文件系统中的stat文件夹,获取所有CPU活动的信息,比如,CPU时间。然后,根据得到的CPU时间,计算对应的CPU资源占用率,具体计算过程可参照相关技术,在此不再赘述。
以轮询周期为1小时为例,电子设备可以在1小时内采集多个CPU资源占用率,然后,将多个CPU资源占用率之间的平均值,作为当前轮询周期对应的CPU资源占用率,用于指示电子设备当前的CPU占用情况。
继续以一个轮询周期为1小时为例,电子设备还可以每隔1小时获取一次CPU资源占用率,作为当前轮询周期对应的CPU资源占用率,用于指示电子设备当前的CPU占用情况。
在一些实施例中,电子设备中的CPU资源轮询功能可以被置为开启状态,也可以被置为关闭状态。这样,在S1之前,也即,system server正常运行之后,电子设备可以查询CPU资源轮询功能是否开启,如果该功能已开启,那么不再检测CPU资源轮询功能是否开启,同时,流程可以进入S1。如果该功能未开启,那么将CPU资源轮询功能置为开启状态,然后流程再进入S1。
S2,依据当前轮询周期对应的CPU资源的占用率,判断是否需要变更systemserver对应的GC相关参数。
在一些实施例中,电子设备可以通过查询预配置列表的方式,确定是否需要变更system server对应的GC相关参数。
示例性地,在预配置列表中不含system server对应标识,或者,预配置列表中仅包含一组针对system server的GC相关参数时,确定不需要变更system server对应的GC相关参数。
又示例性地,在预配置列表中包含针对system server的多组GC相关参数,且每组GC相关参数对应有一个CPU占用率区间时,如果当前轮询周期对应的CPU资源占用率与上一轮询周期对应的CPU资源占用率属于同一CPU占用率区间,那么确定不需要变更systemserver的GC相关参数。如果当前轮询周期对应的CPU资源占用率与上一轮询周期对应的CPU资源占用率不属于同一CPU占用率区间,那么确定需要变更system server的GC相关参数。如果上一轮询周期对应的CPU资源占用率为0,那么也确定需要变更system server的GC相关参数。如果当前轮询周期对应的CPU资源占用率小于0,那么确定不需要变更systemserver的GC相关参数。
另外,在需要变更system server对应的GC相关参数的情况下,流程进入步骤S3。
S3,确定与system server当前运行阶段匹配的GC相关参数,并进行配置。
在一些实施例中,电子设备中可以通过预配置列表,查询匹配的GC相关参数。比如,依据当前轮询周期对应的CPU资源占用率,确定所属的CPU占用率区间,然后,在预配置列表中,查询与所属的CPU占用率区间对应的GC相关参数,作为匹配的GC相关参数。
另外,在本申请实施例中,电子设备中配置有触发变更应用程序的GC相关参数的函数,如,函数setHeapArgs。也就是,电子设备可以通过setHeapArgs,触发变更应用程序的GC相关参数。
例如,在S3确定出与system server匹配的GC相关参数之后,电子设备可以调用函数setHeapArgs,将匹配出的GC相关参数传递给system server对应的runtime(运行时)。runtime可以评估匹配出的GC相关参数是否合理,比如,基于该GC相关参数,确定出的预留内存空间比最大预留空间更大,或者,基于该GC相关参数,为system server分配的独占内存空间大于独占内存上限值的情况下,确定该GC相关参数不合理。当然,确定该GC相关参数合理的情况下,system server对应的runtime通过虚拟机,将GC相关参数传递给内存管理模型(heap),比如,指示虚拟机调用checkAndSetHeapArgs,向内存管理模型发送匹配且合理的GC相关参数,这样,可以更改system server对应的GC相关参数。
以图8为例,轮询周期1和轮询周期2是两个相邻的轮询周期,在轮询周期1确定匹配的GC相关参数之后,可以动态调整system server对应的GC相关参数。在GC相关参数调整后,触发的针对system server进行GC处理的场景下,采用调整后的GC相关参数,为systemserver配置GC水线值。比如,通过预配置列表可以确定system server对应两组GC相关参数:[8M 32M 0.5]和[8M 24M 0.75],在预配置列表中[8M 32M 0.5]与CPU占用率区间a对应,[8M24M 0.75]与CPU占用率区间b对应。在轮询周期1内,如果检测到的CPU资源占用率属于CPU占用率区间a,确定system server对应的GC相关参数为[8M 32M 0.5]。这样,如果system server经过GC处理后,实占内存空间为50M,那么根据实占内存空间(50M)与空间利用率(0.5)确定拟分配的预留内存空间也为50M,但是50M大于GC相关参数中的最大预留限值(32M),这样,可以确定实际分配给system server的预留内存空间为32M。
在轮询周期2确定匹配的GC相关参数之后,可以动态调整system server对应的GC相关参数。在GC相关参数调整后,触发的针对system server进行GC处理的场景下,采用调整后的GC相关参数,为system server配置GC水线值。比如,在轮询周期2内,如果检测到的CPU资源占用率属于CPU占用率区间b,那么确定需要变更system server对应的GC相关参数,具体变更为[8M 24M 0.75]。这样,电子设备可以调用函数setHeapArgs,将[8M24M0.75]传递给system server对应的runtime(运行时),触发变更system server对应的GC相关参数。这样,电子设备可以需要按照[8M 24M 0.75]为system server分配预留内存空间。例如,根据实占内存空间(75M)与空间利用率(0.75)确定拟分配的预留内存空间也为25M,但是25M大于GC相关参数中的最大预留限值(24M),这样,可以确定实际分配给systemserver的预留内存空间为24M。
需要说明的是,在上述实施例中,通过预配置列表就可以快速得到各应用程序的GC相关参数与CPU占用率区间之间的关联。而预配置列表中所记录的每组GC相关参数与CPU占用率区间之间的关联,需要通过大量测试获得。也就是,在创建预配置列表的过程中,确定需要配置多组专属GC相关参数的应用程序之后,可以预先为该应用程序划分多个CPU占用率区间,然后,通过测试确定不同CPU占用率区间所对应的GC相关参数。
以system server对应有CPU占用率区间a,确定CPU占用率区间a对应的GC相关参数为例。system server启动运行时,采用初始的专属GC相关参数为[8M 32M 0.5],在整机的CPU资源占用率属于该CPU占用率区间a的情况下,记录运行设定时长内,system server进行GC的次数。
如果system server进行GC的次数超过预设次数1,那么在同样的CPU占用情况和同样的运行时长内,测试采取其他GC相关参数进行GC的次数,这样,可以确定出能够将GC次数降低至不超过预设次数1且不小于预设次数2的GC相关参数c,然后,将GC相关参数c与CPU占用率区间a相关联,此时的GC相关参数c相较于专属GC相关参数为[8M 32M 0.5]而言,在同等场景下,可以给system server分配更高的GC水线值,减少针对system server的GC次数。
如果system server进行GC的次数低于预设次数2,那么在同样的CPU占用情况和同样的运行时长内,测试采取其他GC相关参数进行GC的次数,这样,可以确定出能够将GC次数提高至不超过预设次数1且不小于预设次数2的GC相关参数d,然后,将GC相关参数d与CPU占用率区间a相关联。此时的GC相关参数d相较于专属GC相关参数为[8M 32M 0.5]而言,在同等场景下,可以给system server分配更低的GC水线值,减少system server长期得不到GC。
如果system server进行GC的次数不低于预设次数2,且不超过预设次数1,那么确定CPU占用率区间a与专属GC相关参数[8M 32M 0.5]相关联。
在其他可能的实施例中,也可以建立不同CPU资源占用率与不同GC相关参数之间的映射函数。这样,电子设备可以根据每个轮询周期中得到的CPU资源占用率,通过上述映射函数,查询与该CPU资源占用率匹配的GC相关参数。
在一些实施例中,电子设备可以选定部分应用程序具有动态调整GC相关参数的权限,比如,上述system server具有动态调整GC相关参数的权限。这样,在应用程序启动之后,电子设备可以检测该应用程序是否具有动态调整GC相关参数的权限。如果有,在每一个轮询周期内,都根据对应的CPU占用情况,判断是否需要调整该应用程序对应的GC相关参数。在确定需要变更应用程序对应的GC相关参数之后,获取与电子设备当前运行阶段适配的GC相关参数,并进行配置。在配置成功的情况下,电子设备可以利用新确定出的GC相关参数,为该应用程序设定GC水线值。在配置失败的情况下,等待进入下一个轮询周期,继续获取CPU占用情况,并再度判断是否需要变更应用程序对应的GC相关参数。
在其他实施例中,电子设备还可以通过整机内存占用情况,确定system server所处的运行阶段。这样,电子设备还可以根据整机内存占用情况的变化,判断是否需要动态调整system server对应的GC相关参数,也即,在system server运行期间,是否改变所对应的GC相关参数。利用内存占用情况动态调整GC相关参数的实现细节,可参考利用整机CPU占用情况动态调整GC相关参数,在此不再赘述,其大概过程可以是:在得到当前轮询周期对应的整机的内存占用量之后,通过预配置列表,查询该整机的内存占用量所属的内存大小区间,如称为内存大小区间a,然后,将预配置列表中与内存大小区间a对应的GC相关参数,作为匹配的GC相关参数。
这样,电子设备在不同的整机内存占用情况下,可以确定system server处于不同运行阶段,此时,电子设备针对system server使用的GC相关参数可能不同。可以理解的,在采用不同GC相关参数给system server分配独占内存空间时,即使system server实际占用的内存大小相同,配置的GC水线值也可以不同。
当然,system server承载系统业务,电子设备整机的系统资源占有情况,能够指示system server的繁忙程度,例如,system server比较繁忙时,整机系统资源占有较多,如,整机CPU资源占用率较高或者整机存储资源占用率较大,在此场景下,system server运行所需的内存空间较大,也即,所需配置的GC水线值较高。system server比较空闲时,整机系统资源占有较少,在此场景下,system server运行所需的内存空间相对较小,也即,所需配置的GC水线值较低。
在一些实施例中,电子设备还可以根据应用程序自身的系统资源占用情况,确定该应用程序所处的运行阶段,并判断是否变更该应用程序对应的GC相关参数。可以理解的,第三方应用程序以及部分系统应用适用于根据应用程序自身的系统资源占用情况,确定该应用程序所处的运行阶段,并判断是否变更该应用程序对应的GC相关参数,当然,其实现原理与整机方案(如,基于整机的系统资源占用情况动态调节GC相关参数的方案)类似,二者区别在于:1、轮询周期内采集的是该应用程序对应的CPU资源占用率(或,该应用程序对应的内存占用量),而不是整机的CPU资源占用率。2、用于区分运行阶段的CPU占用率区间(或内存大小区间),与上述整机方案中的CPU占用率区间的取值存在差异。具体实现细节可参考整机方案。
比如,在预配置列表中,微博TM可以对应有多个CPU占用率区间,微博TM对应的CPU占用率区间中包括CPU占用率区间b,该CPU占用率区间b对应有针对微博TM的GC相关参数e。当然,微博TM还对应的其他CPU占用率区间,以及针对微博TM的其他GC相关参数。这样,在当前轮询周期检测到微博TM对应的CPU资源占用率属于CPU占用率区间b,上一个轮询周期检测到微博TM对应的CPU资源占用率不属于CPU占用率区间b时,电子设备可以变更采用GC相关参数e为微博TM确定GC水线值。具体实现细节,可参考前述实施例中依据整机CPU占用情况,变更针对system server的GC相关参数的过程,在此不再赘述。
比如,在预配置列表中,淘宝TM可以对应有多个内存大小区间,淘宝TM对应的内存大小区间中包括内存大小区间b,该内存大小区间b对应有针对淘宝TM的GC相关参数f。当然,淘宝TM还对应的其他内存大小区间,以及针对淘宝TM的其他GC相关参数。这样,在当前轮询周期检测到淘宝TM对应的实占内存空间属于内存大小区间b,且上一个轮询周期检测到淘宝TM对应的实占内存空间不属于内存大小区间b时,电子设备可以变更采用GC相关参数f为淘宝TM确定GC水线值。具体实现细节,可参考前述实施例中依据整机CPU占用情况,变更针对system server的GC相关参数的过程,在此不再赘述。
在一些实施例中,电子设备还可以根据应用程序的GC次数,确定该应用程序所处的运行阶段,并判断是否变更该应用程序对应的GC相关参数。作为一种实施例,在预配置列表中,各应用程序可以对应多个次数区间,每一个次数区间对应有一组GC相关参数。例如,以应用c为例,应用c对应有多个次数区间,每个次数区间对应有一组GC相关参数,那么预配置列表中包括表3所示的部分:
表3
其中,上述次数区间1、次数区间2和次数区间3是三个连续且不存在重叠的次数区间,应用c对应的次数区间可以预先指定,次数区间1与GC相关参数y1对应,次数区间2与GC相关参数y2对应,次数区间3与GC相关参数y3对应。
这样,电子设备可以统计每个轮询周期内应用程序的GC次数,然后,通过当前轮询周期中GC次数所属的次数区间,确定与该应用程序当前匹配的GC相关参数。比如,淘宝TM对应有多个次数区间,其中,次数区间a对应有GC相关参数g。在当前轮询周期内,针对淘宝TMGC的次数属于次数区间a,且上一个轮询周期针对淘宝TMGC的次数不属于次数区间a时,变更采用GC相关参数g为淘宝TM配置GC水线值。
在其他可能的实施例中,电子设备还可以每次为应用程序分配独占内存空间之前,统计GC处理之前的设定时间段内,该应用程序对应的GC次数,然后,GC次数所属的次数区间,确定与该应用程序当前匹配的GC相关参数。
总之,除了上述已介绍的利用整机CPU占用情况、整机存储占用情况、应用程序对应的CPU占用情况、应用程序对应的存储占用情况或者应用程序的GC次数,判断是否变更应用程序对应的GC相关参数之外,还可以利用设备温度、整机空闲内存大小(也即,电子设备中未分配的内存空间)、设备亮灭屏状态等判断条件判断是否变更应用程序对应的GC相关参数。
示例性地,不同设备温度区间,对应不同的GC相关参数。示例性地,不同的整机空闲内存大小区间,对应不同的GC相关参数。示例性地,设备亮屏状态下对应的GC相关参数与设备灭屏状态下对应的GC相关参数不同。
另外,在应用程序具有动态调整GC相关参数的权限,且正在运行的情况下,在每个轮询周期内,电子设备可以根据任意一条判定条件(比如,整机CPU占用情况、整机存储占用情况、应用程序对应的CPU占用情况、应用程序对应的存储占用情况或者应用程序的GC次数、设备温度、亮灭屏状态、整机空闲内存大小等),判断是否变更针对该应用程序的GC相关参数,也即,在该应用程序运行的过程中,判断是否采用不同的GC相关参数为其配置GC水线值。当然,在其他可能的实施例中,电子设备还可以结合多种判定条件,综合判断是否变更针对该应用程序的GC相关参数。也就是,预配置列表内可以针对特定的应用程序预先配置不同判断条件组合下对应的GC相关参数,这样,在该应用程序运行过程中,在检测到满足任意一个判断条件组合之后,可以变更该应用程序的GC相关参数。
以上实施例,介绍了应用集合以预配置列表的形式存在时,在应用程序运行过程中,动态调整所用GC相关参数的过程。在应用集合是应用名单时,在应用程序运行过程中,动态调整所用GC相关参数的过程与预配置列表同理,在此不再赘述。另外,应用集合是指具有特定标识的应用程序时,各应用程序对应的专属GC相关参数可以集成到该应用程序的程序文件中。在该应用程序对应多组专属GC相关参数时,程序文件中包含不同专属GC相关参数的使用条件,比如,当前的CPU资源占用率属于指定的CPU占用率区间,再比如,当前的内存占用量属于指定的内存大小区间,再比如,当前的GC次数属于指定的次数区间。
在一些场景中,电子设备中安装有第一类应用、第二类应用。上述第一类应用和第二类应用均位于预设的应用集合,但二者存在差异。示例性地,上述第一类应用和第二类应用的差异可以是以下至少一项:
(1)上述第一类应用可以是重负载应用程序,上述第二类应用可以是轻负载应用程序。
(2)上述第一类应用安装包体积大小大于第二类应用的安装包大小。
(3)运行期间,第一类应用单位时间内新增的内存占用量大于第二类应用单位时间内新增的内存占用量。
(4)第一类应用的运行负载(系统资源的占用量)大于第二类应用的运行负载。
(5)运行期间,第一类应用单位时间内存访问频率高于第二类应用单位时间内的内存访问频率。
示例性地,上述第一类应用可以需要长期前台运行的社交应用、视频应用、游戏应用等,上述第二类应用可以是系统提供的时钟应用、备忘录应用或者天气应用等。
另外,预配置列表所包含的多个标识,又可以称为多个应用标识。上述多个应用标识中包括指示第一类应用的第一标识以及指示第二类应用的第二标识。
以第一类应用包括微博TM为例,电子设备接收用户针对微博TM的第一操作,上述第一操作可以指示运行微博TM,比如,是点击微博TM的应用图标的操作。然后,电子设备响应于第一操作,启动所述微博TM。这样,微博TM也进入运行状态。
在微博TM运行期间,电子设备会针对微博TM进行多次GC。在微博TM经过第t次垃圾回收处理后,如果微博TM占用的内存空间大小为内存数值1,那么电子设备会根据内存数值1为微博TM设置预设阈值1(也即,GC水线值)。这样,在微博TM占用的内存大小由所述内存数值1达到预设阈值1之后,会触发针对微博TM进行第t+1次垃圾回收处理。
同样地,在日历应用运行期间,电子设备会针对日历应用进行多次GC。在日历应用经过第g次垃圾回收处理后,如果日历应用占用的内存空间大小也为内存数值1,那么电子设备会根据内存数值1为日历应用设置预设阈值2(也即,GC水线值)。这样,在日历应用占用的内存大小由所述内存数值1达到预设阈值2之后,会触发针对日历应用进行第g+1次垃圾回收处理。
然而,由于微博TM和日历应用均位于应用集合,均对应有各自专属的GC相关参数,即使微博TM和日历应用GC后实际占用的内存空间相同,为他们分配的GC水线值也不同。另外,由于微博TM和日历应用之间的前述差异,微博TM的GC水线值会大于日历应用的GC水线值。
也就是,在第一类应用为重负载应用,第二类应用为轻负载应用的情况下,相较于采用同样的GC相关参数配置统一的GC水线值而言,本申请实施例中,会给第一类应用配置更高的GC水线值,可以避免第一类应用频繁触发GC。也会给第二类应用配置更低的GC参数,避免第二类应用运行期间场景无法GC,导致第二类应用占用内存空间无法得到有效的回收,造成系统中常驻内存过多。
另外,接前例,微博TM每次GC之后,如果所占内存空间大小不同,电子设备为其配置的GC水线值也不同。也即,微博TM在运行过程中经过第t+1次垃圾回收处理后,微博TM占用的内存空间大小为内存数值3。在微博TM占用的内存大小由所述内存数值3达到预设阈值4(GC水线值)时,针对微博TM进行第t+2次垃圾回收处理。其中,内存数值1与内存数值3不同,预设阈值4与预设阈值1不同。
接前例,日历应用每次GC之后,如果所占内存空间大小不同,电子设备为其配置的GC水线值也不同。也即,日历应用在运行过程中经过第g+1次垃圾回收处理后,日历应用占用的内存空间大小为内存数值4。在日历应用占用的内存大小由内存数值4达到预设阈值5(GC水线值)时,针对日历应用进行第t+2次垃圾回收处理。其中,内存数值1与内存数值4不同,预设阈值5与预设阈值2不同。
另外,上述t和g均为大于0的正整数,二者可以相同,也可以不同,本申请实施例对此不作限定。
在一些实施例中,应用集合中包括第一应用和第三应用,上述第一应用和第三应用均对应有至少两组专属的GC相关参数。其中,上述第一应用和第三应用可以是systemserver、社交应用(微博TM、微信TM等)、即时通讯应用、视频应用、购物应用、短视频应用、直播应用、会议应用、游戏应用、备忘录应用、邮件应用等GC次数受使用情况影响较大的应用。另外,上述第一应用和第三应用可以是轻负载应用,也可以重负载应用,本申请实施例对此不作具体限定。
在一些实施例中,电子设备可以接收并响应于用户针对第一应用的第一操作,启动并运行第一应用。
在第一应用运行过程中,第一应用在电子设备中占用的内存空间会变化,也会触发多次垃圾回收处理(也即,GC),比如,第一应用在运行过程中,会经过第i次GC处理,和第j次GC处理,其中,i和j均为正整数,二者可以相同,也可以不同。在电子设备针对第一应用进行第i次GC处理后,第一应用占用的内存空间大小为第一内存数值,也就是,第i次GC处理完成时,第一应用的实占内存空间的大小为第一内存数值;在电子设备针对第一应用进行第j次GC处理后,第一应用占用的内存空间大小也为第一内存数值,也就是,第j次GC处理完成时,第一应用的实占内存空间的大小也为第一内存数值。
另外,在第一应用占用的内存大小由第一内存数值达到第一预设阈值时,触发针对第一应用进行第i+1次GC。在第一应用占用的内存大小由第一内存数值达到第二预设阈值时,针对第一应用进行第j+1次GC。
在第一预设条件下,针对第一应用采用的GC相关参数可以不同,也就是,第一应用在两次GC后,即使实占内存空间相同,所配置的第一预设阈值与第二预设阈值不同。其中,第一预设条件包括以下一项或多项的组合:
(1)电子设备在第i次GC时对应的CPU占用率与电子设备在第j次GC时对应的CPU占用率不同。
在一些实施例中,电子设备在第i次GC时对应的CPU占用率包括以下任意一种:
其一,在第i次GC完成时所述第一应用占用的CPU占用率。
其二,在第i次GC完成时所述电子设备整机占用的CPU占用率。
其三,第三时间段内整机的平均CPU占用率,其中,第三时间段为第i次GC完成之前的时间段。
示例性的,第三时间段可以是第i次GC完成时间点所对应的轮询周期。可以理解地,在第一应用启动之后,电子设备每个指定时间间隔,会进行一次设备性能信息的采集,如,CPU资源占用率(整机对应的占用率或第一应用对应的占用率)、内存资源占用量(整机对应的占用量或第一应用对应的占用量)、GC次数、设备温度、整机空闲的内存空间、亮灭屏状态等)的采集,相邻两次得到设备性能信息的时间间隔为一个轮询周期。
在一些实施例中,在每个轮询周期,根据得到的设备性能信息,确定是否更换第一应用的GC相关参数的过程,与电子设备判断是否针对第一应用进行GC的过程是异步执行的。也就是说,如图9A所示,轮询周期b是轮询周期a的相邻上一个轮询周期,在本次垃圾处理完成的时间点与轮询周期a对应的时间段重合的情况下,本次垃圾回收处理所用的GC相关参数,受轮询周期b的检测结果影响,比如,根据轮询周期b中采集的设备性能信息确定第一应用和第一GC相关参数匹配,那么在本次垃圾回收处理时,采用第一GC相关参数为第一应用配置GC水线值。也就是说,可以将轮询周期b称为本次垃圾处理的时间点所对应的轮询周期。
又示例性地,第三时间段还可以是采用本次垃圾处理完成的时间点为时间终点,且时间长度固定的时间段。比如,图9B所示,本次垃圾处理完成的时间点为t1,时间长度预配置为T,那么第三时间段为t2~t1之间的时间段。后续实施例中,提到的GC处理完成之前的时间段(如,第一时间段、第二时间段、第四时间段、第五时间段、第六时间段等)与第三时间段同理,后续不再赘述。
其四,第三时间段内第一应用的平均CPU占用率。
在一些实施例中,电子设备在第j次GC时对应的CPU占用率包括以下任意一种:
其一,在第j次GC完成时第一应用占用的CPU占用率。
其二,在第j次GC完成时所述电子设备整机占用的CPU占用率。
其三,第四时间段内整机的平均CPU占用率,其中,所述第四时间段为第j次GC完成之前的时间段,所述第三时间段与第四时间段的时间长度相同。
其四,第四时间段内所述第一应用的平均CPU占用率。示例性的,第四时间段可以是第j次GC完成时间点所对应的轮询周期。
(2)第一应用在第一时间段内的GC次数与在第二时间段内的GC次数不同,其中,第一时间段是第i次GC完成之前的时间段,第二时间段是第j次GC完成之前的时间段,第一时间段与第二时间段的时间长度相同。比如,第一时间段可以是第i次GC完成的时间点所对应的轮询周期,第二时间段可以是第j次GC完成的时间点所对应的轮询周期。
(3)电子设备在第i次GC时的设备温度与在第j次GC时的设备温度不相同。例如,电子设备在针对第一应用的第i次GC完成时对应的设备温度与针对第一应用的第j次GC完成时对应的电子设备的设备温度不相同。
(4)电子设备在第i次GC时对应的整机空闲内存大小和电子设备在第j次GC时对应的整机空闲内存大小不相同。例如,第i次GC完成时电子设备对应的整机空闲内存大小,与第j次GC完成时电子设备对应的整机空闲内存大小不相同。
(5)电子设备在第i次GC时对应的亮灭屏状态与在第j次GC时对应的亮灭屏状态不同。例如,电子设备在第i次GC完成时的亮灭屏状态与在第j次GC完成时对应的亮灭屏状态不同。
以上提到的第i次GC和第j次GC都是指针对第一应用的GC。另外,上述上一项或多项组成的第一预设条件,可以指示各类需要调节应用程序对应的GC相关参数的场景。当然,在不属于上述场景的情况下,可以不变更第一应用对应的GC相关参数。比如,在第二预设条件下,可以不调整第一应用对应的GC相关参数,也即,在针对第一应用的两次GC之后,如果实占内存空闲相同,那么配置的GC水线值是相同,也即,第一预设阈值与第二预设阈值相同。
其中,上述第二预设条件包括以下所有项:
电子设备在第i次GC时对应的CPU占用率与电子设备在第j次GC时对应的CPU占用率相同。
第一应用在第一时间段内的GC次数与在第二时间段内的GC次数相同。
电子设备在第i次GC时对应的设备温度与在第j次GC时对应的设备温度相同。
电子设备在第i次GC时对应的整机空闲内存大小和电子设备在第j次GC时对应的整机空闲内存大小相同。
电子设备在第i次GC时对应的亮灭屏状态与在第j次GC时对应的亮灭屏状态相同。
在另一些实施例中,电子设备还可以接收用户针对第三应用的第三操作,并响应于该操作,启动并运行第三应用。
在第三应用运行过程中,第三应用在电子设备中占用的内存空间会变化,也会触发多次垃圾回收处理(也即,GC),比如,第三应用在运行过程中,会经过第m次GC处理,和第n次GC处理,其中,m和n是不相同的两个正整数。
在第三应用在运行过程中经过第m次垃圾回收处理后所述第三应用占用的内存空间大小为第三内存数值,经过第n次垃圾回收处理后第三应用占用的内存空间大小为第四内存数值,其中,第三内存数值与所述第四内存数值不同。
在进行第m次垃圾回收之后,由于第三应用实占内存空间为第三内存数值,可以使用第三应用对应的一组GC相关参数,确定触发第m+1次GC处理的GC水线值(也即,第五预设阈值)。这样,在第m次GC处理之后,第三应用占用的内存大小由所述第三内存数值达到第五预设阈值时,针对所述第三应用进行第m+1次垃圾回收处理。
在进行第n次垃圾回收之后,由于第三应用实占内存空间为第四内存数值,第三内存数值与第四内存数值不同,可以使用第三应用对应的另一组GC相关参数,确定触发第n+1次GC处理的GC水线值(也即,第六预设阈值)。这样,在进行第n次垃圾回收之后,在所述第三应用占用的内存大小由所述第四内存数值达到第六预设阈值时,针对所述第三应用进行第n+1次垃圾回收处理。
可以理解的,由于不同GC相关参数所对应的空间利用率不同,这样,第三内存数值与第五预设阈值之间的第一比例,与第四内存数值与第六预设阈值之间的第二比例是不相同的。
在一些实施例中,针对不需要使用专属GC相关参数的应用程序,可以直接采用系统默认的GC相关参数,确定对应的独占内存空间及GC水线值。例如,图5所示,上述方法还包括:
S104,在应用程序2启动运行时,获取应用程序2的标识2。
在一些实施例中,上述标识2可以唯一指示应用程序2。示例性地,上述标识2可以是应用程序2对应的应用名称。又示例性地,上述标识2也可以应用程序2对应的进程名称,也即,应用程序2运行时所创建的应用进程的名称。
S105,在标识2不属于预配置列表时,根据系统默认的GC相关参数2,确定分配给应用程序2独占的内存空间。示例性地,如图10所示,上述S105可以包括S105-1和S105-3。
S105-1,电子设备可以获取预配置列表。
在一些实施例中,如果系统配置文件1已经解析,那么直接获取该预配置列表。如果系统配置文件1尚未被解析,那么先解析系统配置文件1,得到上述预配置列表。
S105-2,在标识2与预配置列表中的标识均不相同时,获取GC相关参数2。
如图10所示,在标识2为“聊天”时,预配置列表中不含标识“聊天”。这样,电子设备可以查询开机阶段解析出的GC相关参数2。可以理解地,标识2为“聊天”时,可以指示应用程序2属于聊天应用,另外,由于预配置列表中不含标识“聊天”,指示应用程序2不属于需要专属GC相关参数的应用,也即,对于应用程序2而言,系统默认的GC相关参数2为最适宜的GC相关参数。
S105-3,依据GC相关参数2和应用程序2对应的实占内存空间,确定分配给应用程序2的预留内存空间。
例如,图10所示,GC相关参数2包括最小预留限值是2M,最大预留限值是12M,空间利用率是0.8,独占空间上限值为512M。在应用程序2对应的应用进程已占用50M的情况下,根据空间利用率,计算出的预留内存空间为12.5M。在最大预留限值(如,12M)的限制下,可以确定实际的预留内存空间为12M。
再例如,在应用程序2对应的应用进程已占用40M的情况下,根据空间利用率,计算出的预留内存空间为10M。可以理解地,10M小于GC相关参数2中的最大预留限值(12M),且大于GC相关参数2中的最小预留限值(2M)。电子设备可以确定分配给应用程序2的预留内存空间为10M。
再例如,在应用程序2对应的应用进程已占用6M的情况下,根据空间利用率,计算出的预留内存空间为1.5M。可以理解地,1.5M小于GC相关参数2中的最小预留限值(2M)。电子设备可以确定分配给应用程序2的预留内存空间等于上述最小预留限值(也即,2M)。
这样,电子设备根据应用程序2对应的实占内存空间和预留内存空间,确定分配给应用程序2独占的内存空间。
在一些实施例中,分配给应用程序2独占的内存空间包括实占内存空间和预留内存空间。示例性地,分配给应用程序2独占的内存空间大小可以等于实占内存空间和预留内存空间之和。又示例性地,分配给应用程序2独占的内存空间大小可以略大于实占内存空间和预留内存空间之和。
这样,电子设备可以根据给应用程序2分配的独占内存空间的大小,确定应用程序2对应的GC水线值。在应用程序2对应的实占内存空间大于或等于对应的GC水线值时,可以触发针对应用程序2的GC。
另外,对于应用程序2此类不属于预配置列表的应用程序,在未被加入预配置列表之前,可认为是普适于默认GC相关参数,在应用程序2的整个生命周期内,每次GC处理之后,电子设备都会按照默认GC相关参数为应用程序2分配独占内存空间,也即,电子设备不会动态调整应用程序2所对应的GC相关参数。
另外,对应部分属于预配置列表,但仅对应有一组GC相关参数的应用程序,在整个生命周期内,电子设备也不会动态调整该应用程序所对应的GC相关参数。
下面以第二应用和第四应用进行举例。其中,上述第二应用和第四应用可以是位于应用集合之外的应用程序,也可以是仅对应有一组GC相关参数的应用程序。比如,第二应用和第四应用可以是音乐应用、网约车应用、网银应用、日历应用、天气应用等GC次数受使用情况影响不大的应用程序。
在一些实施例中,电子设备可以接收用户针对第二应用的第二操作,并响应于该操作,启动并运行第二应用。
在第二应用运行过程中,第二应用在电子设备中占用的内存空间会变化,也会触发多次垃圾回收处理(也即,GC),比如,第二应用在运行过程中,会经过第r次GC,和第k次GC,其中,r和k均为正整数,二者可以相同,也可以不同。在电子设备针对第二应用进行第r次GC处理后,第二应用占用的内存空间大小为第二内存数值,也就是,第r次GC处理完成时,第二应用的实占内存空间的大小为第二内存数值;在电子设备针对第二应用进行第k次GC处理后,第二应用占用的内存空间大小也为第二内存数值,也就是,第k次GC处理完成时,第二应用的实占内存空间的大小也为第二内存数值。
在第二应用占用的内存大小由第二内存数值达到第三预设阈值时,触发针对第二应用进行第r+1次垃圾回收处理。在第二应用占用的内存大小由第二内存数值达到第四预设阈值时,针对第二应用进行第k+1次垃圾回收处理。
在一些实施例中,任意场景下,上述第三预设阈值与第四预设阈值都相同。比如,在第三预设条件所指示的场景下,只要GC之后的内存大小相同,配置的触发GC的水线值也相同。其中,上述第三预设条件包括以下一项或多项:
电子设备在第r次垃圾回收处理时对应的CPU占用率与所述电子设备在第k次垃圾回收处理时对应的CPU占用率不同。
第二应用在第五时间段内的垃圾回收次数与在第六时间段内的垃圾回收次数不同,所述第五时间段是在第r次垃圾回收处理完成之前的时间段,第六时间段在第k次垃圾回收处理完成之前的时间段,所述第五时间段与所述第六时间段的时间长度相同。例如,第五时间段可以是针对第二应用的第r次GC完成时间点对应的轮询周期,第六时间段可以是针对第二应用的第k次GC完成时间点对应的轮询周期。
电子设备在第r次垃圾回收处理时对应的设备温度与在第k次垃圾回收处理时对应的设备温度不相同。
电子设备在第r次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第k次垃圾回收处理时对应的整机空闲内存大小不相同。
电子设备在第r次垃圾回收处理时对应的亮灭屏状态与在第k次垃圾回收处理时对应的亮灭屏状态不同。
其中,上述第三预设条件类似于前述第一预设条件,是指可以变更应用程序对应的GC相关参数的场景。但是,第二应用这类只有一组GC相关参数的应用程序,任何场景下(如,包含满足第三预设条件的场景和满足第四预设条件的场景),都不能变更对应的GC相关参数,也即,第二应用在两次GC之后实占内存空间相同的情况下,配置的GC水线也相同。
其中,第四预设条件包括以下所有项:
电子设备在第r次垃圾回收处理时对应的CPU占用率与所述电子设备在第k次垃圾回收处理时对应的CPU占用率相同;
第二应用在所述第五时间段内的垃圾回收次数与在所述第六时间段内的垃圾回收次数相同;
电子设备在第r次垃圾回收处理时对应的设备温度与在第k次垃圾回收处理时对应的设备温度相同;
电子设备在第r次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第k次垃圾回收处理时对应的整机空闲内存大小相同;
电子设备在第r次垃圾回收处理时对应的亮灭屏状态与在第k次垃圾回收处理时对应的亮灭屏状态相同。
另外,第四应用仅对应一组GC相关参数,在第四应用的整个生命周期内,GC相关参数都不会改变。在接收到针对第四应用的启动操作,如第四操作,第四应用可以启动运行。在第四应用运行过程中,会触发多次垃圾回收处理。比如,会触发第a次垃圾回收处理和第b次垃圾回收处理。在第a次垃圾回收处理之后第四应用对应的实占内存空间为第三内存数值,如果根据第三内存数值和对应的GC相关参数,确定出的预留内存空间不等于该GC相关参数中的最大预留限值,或最小预留限值,在第四应用占用的内存大小由第三内存数值达到第七预设阈值(GC水线值)时,针对第四应用进行第a+1次垃圾回收处理,其中,所述a为正整数。
另外,在进行第b次垃圾回收之后,第四应用占用的内存空间大小为第四内存数值,如果根据第四内存数值和对应的GC相关参数,确定出的预留内存空间不等于该GC相关参数中的最大预留限值,或最小预留限值,在第四应用占用的内存大小由第四内存数值达到第八预设阈值时,针对第四应用进行第b+1次垃圾回收处理,其中,所述b为正整数。
在第三内存数值与第四内存数值不相同的情况下,第七预设阈值对应的第三比例与第八预设阈值对应的第四比例(空间利用率)相同。其中,第三比例是所采用的GC相关参数中的空间利用率,是第三内存数值与第七预设阈值之间的比值。同样,第四比例是所采用的GC相关参数中的空间利用率,是第四内存数值与所述第八预设阈值之间的比值。
下面通过各类型应用程序实际运行过程中GC频率以及内存占用情况,介绍电子设备(如,手机)使用本申请提供的方法和未使用本申请提供的方法之间的差异。
示例性地,电子设备中常见的第三方应用微博TM属于重负载应用。以微博TM为测试对象,测试电子设备使用本申请提供的方法的场景(如称为场景1)和未使用本申请提供的方法的场景(如称为场景2),微博TM对应的GC情况,测试结果如下表4所示:
表4
其中,GC间隔是相邻两次GC之间的间隔时长,GC平均时间是单次GC所占用时长的平均值,GC次数是指微博TM运行期间的GC总次数,GC总时长是指微博TM运行期间,实际执行GC的总时长。
显然,根据表4的测试结果可见,相较于未使用本申请的方法,使用本申请提供的方法之后,在相同的运行时长内,电子设备针对微博TM的GC间隔更长,GC次数更少,虽然GC平均时间稍长,但是GC总时长更短,也就是,明显改善第三方的重负载应用频繁GC的问题,有效减少了GC对系统资源的占用时长。当然,除了微博TM之外,使用本申请提供的方法之后,微信TM、短视频应用、游戏应用、视频应用等均能改善频繁GC的问题。
又示例性地,电子设备中的系统服务(system server)属于重负载的系统应用。以system server为测试对象,测试电子设备使用本申请提供的方法的场景(如称为场景1)和未使用本申请提供的方法的场景(如称为场景2),system server对应的GC情况,测试结果如下表5所示:
表5
根据表5的测试结果可见,相较于未使用本申请的方法,使用本申请提供的方法之后,在相同的运行时长内,电子设备针对system server的GC间隔更长,GC次数更少,GC总时长更短,也就是,明显改善重负载的系统应用频繁GC的问题,有效减少了GC对系统资源的占用时长。
又示例性地,电子设备中的进程com.android.phone属于轻负载应用进程。以com.android.phone为测试对象,测试电子设备使用本申请提供的方法的场景(如称为场景1)和未使用本申请提供的方法的场景(如称为场景2),com.android.phone对应的GC情况,测试结果如下表6所示:
表6
com.android.phone | 常驻内存大小(M) |
场景2 | 69 |
场景1 | 47 |
根据表6的测试结果可见,相较于未使用本申请的方法,使用本申请提供的方法之后,在相同的运行时长内,com.android.phone对应的常驻内存更少。也就是,明显改善轻负载的应用长时间无法触发GC,导致常驻内存过大的问题。除了com.android.phone线程之外,应用了上述方法之后,日历应用、备忘录应用、时钟应用、考勤应用等也能改善常驻内存过大的问题。
本申请实施例还提供一种电子设备,该电子设备可以包括:存储器和一个或多个处理器。该存储器和处理器耦合。该存储器用于存储计算机程序代码,该计算机程序代码包括计算机指令。当处理器执行计算机指令时,可使得电子设备执行上述实施例中的各个步骤。当然,该电子设备包括但不限于上述存储器和一个或多个处理器。
本申请实施例还提供一种芯片系统,该芯片系统可以应用于前述实施例中的终端设备。如图11所示,该芯片系统包括至少一个处理器2201和至少一个接口电路2202。该处理器2201可以是上述电子设备中的处理器。处理器2201和接口电路2202可通过线路互联。该处理器2201可以通过接口电路2202从上述电子设备的存储器接收并执行计算机指令。当计算机指令被处理器2201执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
在一些实施例中,通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何在本申请实施例揭露的技术范围内的变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。
Claims (12)
1.一种内存垃圾的回收方法,其特征在于,应用于电子设备,所述方法包括:
接收用户针对第一应用的第一操作;
响应于所述第一操作,启动所述第一应用,其中,所述第一应用在运行过程中经过多次垃圾回收处理;
其中,在第i次垃圾回收处理后所述第一应用占用的内存空间大小为第一内存数值,且所述第一应用占用的内存大小由所述第一内存数值达到第一预设阈值的情况下,针对所述第一应用进行第i+1次垃圾回收处理,其中,i为正整数;
在第j次垃圾回收处理后所述第一应用占用的内存空间大小为第一内存数值,且所述第一应用占用的内存大小由所述第一内存数值达到第二预设阈值的情况下,针对所述第一应用进行第j+1次垃圾回收处理,其中,j为正整数,并且i和j不同;
其中,在第一预设条件下,所述第一预设阈值与所述第二预设阈值不同;所述第一预设条件包括以下一项或多项的组合:
所述电子设备在第i次垃圾回收处理时对应的CPU占用率与所述电子设备在第j次垃圾回收处理时对应的CPU占用率不同;
所述第一应用在第一时间段内的垃圾回收次数与在第二时间段内的垃圾回收次数不同,其中,所述第一时间段是第i次垃圾回收处理完成之前的时间段,所述第二时间段是第j次垃圾回收处理完成之前的时间段,所述第一时间段与所述第二时间段的时间长度相同;
所述电子设备在第i次垃圾回收处理时对应的设备温度与在第j次垃圾回收处理时对应的设备温度不相同;
所述电子设备在第i次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第j次垃圾回收处理时对应的整机空闲内存大小不相同;
所述电子设备在第i次垃圾回收处理时处于亮屏状态,在第j次垃圾回收处理时处于灭屏状态,或者,所述电子设备在第i次垃圾回收处理时处于灭屏状态,在第j次垃圾回收处理时处于亮屏状态。
2.根据权利要求1所述的方法,其特征在于,在第二预设条件下,所述第一预设阈值与所述第二预设阈值相同,所述第二预设条件包括以下所有项:
所述电子设备在第i次垃圾回收处理时对应的CPU占用率与所述电子设备在第j次垃圾回收处理时对应的CPU占用率相同;
所述第一应用在所述第一时间段内的垃圾回收次数与在所述第二时间段内的垃圾回收次数相同;
所述电子设备在第i次垃圾回收处理时对应的设备温度与在第j次垃圾回收处理时对应的设备温度相同;
所述电子设备在第i次垃圾回收处理时对应的整机空闲内存大小和所述电子设备在第j次垃圾回收处理时对应的整机空闲内存大小相同;
所述电子设备在第i次垃圾回收处理时对应的亮灭屏状态与在第j次垃圾回收处理时对应的亮灭屏状态相同。
3.根据权利要求1所述的方法,其特征在于,所述电子设备在第i次垃圾回收处理时对应的CPU占用率包括以下任意一种:
在第i次垃圾回收处理完成时所述第一应用占用的CPU占用率;
在第i次垃圾回收处理完成时所述电子设备整机占用的CPU占用率;
第三时间段内整机的平均CPU占用率,其中,所述第三时间段为第i次垃圾回收处理完成之前的时间段;
所述第三时间段内所述第一应用的平均CPU占用率;
所述电子设备在第j次垃圾回收处理时对应的CPU占用率包括以下任意一种:
在第j次垃圾回收处理完成时所述第一应用占用的CPU占用率;
在第j次垃圾回收处理完成时所述电子设备整机占用的CPU占用率;
第四时间段内整机的平均CPU占用率,其中,所述第四时间段为第j次垃圾回收处理完成之前的时间段,所述第三时间段与第四时间段的时间长度相同;
所述第四时间段内所述第一应用的平均CPU占用率。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述第一应用是位于所述电子设备中预设的应用集合中的应用。
5.根据权利要求4所述的方法,其特征在于,所述第一应用包括游戏应用、即时通讯应用、系统服务、社交应用、短视频应用、直播应用、会议应用、邮件应用。
6.根据权利要求4所述的方法,其特征在于,所述电子设备中还包括第二应用,所述第二应用是位于所述预设的应用集合之外的应用,所述方法还包括:
接收用户针对所述第二应用的第二操作;
响应于所述第二操作,启动所述第二应用,其中,所述第二应用在运行过程中经过多次垃圾回收处理;
在第r次垃圾回收处理后所述第二应用占用的内存空间大小为第二内存数值,在所述第二应用占用的内存大小由所述第二内存数值达到第三预设阈值时,针对所述第二应用进行第r+1次垃圾回收处理,其中,所述r为正整数;
在第k次垃圾回收处理后所述第二应用占用的内存空间大小为第二内存数值,在所述第二应用占用的内存大小由所述第二内存数值达到第四预设阈值时,针对所述第二应用进行第k+1次垃圾回收处理,其中,所述k为正整数;
其中,所述第三预设阈值与所述第四预设阈值相同。
7.根据权利要求5所述的方法,其特征在于,所述应用集合包括预先指定的应用程序,或者,所述应用集合包括应用使用频率、应用负载大小以及应用安装包大小中至少一项符合预设要求的应用程序。
8.一种内存垃圾的回收方法,其特征在于,应用于电子设备,所述方法包括:
接收用户针对第三应用的第三操作;
响应于所述第三操作,启动所述第三应用,其中,所述第三应用在运行过程中经过多次垃圾回收处理;
在进行第m次垃圾回收之后,所述第三应用占用的内存空间大小为第三内存数值,在所述第三应用占用的内存大小由所述第三内存数值达到第五预设阈值时,针对所述第三应用进行第m+1次垃圾回收处理,其中,所述m为正整数;
在进行第n次垃圾回收之后,第n次垃圾回收处理后所述第三应用占用的内存空间大小为第四内存数值,在所述第三应用占用的内存大小由所述第四内存数值达到第六预设阈值时,针对所述第三应用进行第n+1次垃圾回收处理,其中,所述n为正整数;
其中,在所述第三内存数值与所述第四内存数值不相同的情况下,所述第五预设阈值对应的第一比例与所述第六预设阈值对应的第二比例不同,所述第一比例是所述第三内存数值与所述第五预设阈值之间的比值,所述第二比例是所述第四内存数值与所述第六预设阈值之间的比值。
9.根据权利要求8所述的方法,其特征在于,所述电子设备中包括第四应用,所述方法包括:
接收用户针对第四应用的第四操作;
响应于所述第四操作,启动所述第四应用,其中,所述第四应用在运行过程中经过多次垃圾回收处理;
在进行第a次垃圾回收之后,所述第四应用占用的内存空间大小为第三内存数值,在所述第四应用占用的内存大小由所述第三内存数值达到第七预设阈值时,针对所述第四应用进行第a+1次垃圾回收处理,其中,所述a为正整数;
在进行第b次垃圾回收之后,所述第四应用占用的内存空间大小为第四内存数值,在所述第四应用占用的内存大小由所述第四内存数值达到第八预设阈值时,针对所述第四应用进行第b+1次垃圾回收处理,其中,所述b为正整数;
其中,在所述第三内存数值与所述第四内存数值不相同的情况下,所述第七预设阈值对应的第三比例与所述第八预设阈值对应的第四比例相同,所述第三比例是所述第三内存数值与所述第七预设阈值之间的比值,所述第四比例是所述第四内存数值与所述第八预设阈值之间的比值;
所述第三应用是位于所述电子设备中预设的应用集合中的应用,所述第四应用是位于所述应用集合之外的应用。
10.根据权利要求9所述的方法,其特征在于,所述应用集合包括预先指定的应用程序,或者,所述应用集合包括应用使用频率、应用负载大小以及应用安装包大小中至少一项符合预设要求的应用程序,所述第三应用包括游戏应用、即时通讯应用、系统服务、社交应用、短视频应用、直播应用、会议应用、邮件应用,所述第四应用包括网约车应用、音乐应用、网银应用。
11.一种电子设备,其特征在于,电子设备包括一个或多个处理器和存储器;所述存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当一个或多个处理器执行计算机指令时,所述一个或多个处理器,用于执行如权利要求1-10中任一项所述的方法。
12.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310176154.5A CN116303110B (zh) | 2022-11-22 | 2022-11-22 | 一种内存垃圾的回收方法及电子设备 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211466645.5A CN118069542A (zh) | 2022-11-22 | 一种内存垃圾的回收方法及电子设备 | |
CN202310176154.5A CN116303110B (zh) | 2022-11-22 | 2022-11-22 | 一种内存垃圾的回收方法及电子设备 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211466645.5A Division CN118069542A (zh) | 2022-11-22 | 2022-11-22 | 一种内存垃圾的回收方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116303110A CN116303110A (zh) | 2023-06-23 |
CN116303110B true CN116303110B (zh) | 2023-11-14 |
Family
ID=86850641
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310176154.5A Active CN116303110B (zh) | 2022-11-22 | 2022-11-22 | 一种内存垃圾的回收方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303110B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、系统及方法 |
CN111371849A (zh) * | 2019-02-22 | 2020-07-03 | 华为技术有限公司 | 数据处理的方法和电子设备 |
CN113722087A (zh) * | 2021-06-10 | 2021-11-30 | 荣耀终端有限公司 | 虚拟内存管理方法和电子设备 |
CN114048051A (zh) * | 2017-07-25 | 2022-02-15 | 华为技术有限公司 | 检测方法、设备及计算机可读存储介质 |
CN114253737A (zh) * | 2022-02-28 | 2022-03-29 | 荣耀终端有限公司 | 电子设备及其内存回收方法、介质 |
CN114721812A (zh) * | 2021-01-04 | 2022-07-08 | 华为技术有限公司 | 内存释放方法及相关设备 |
CN114968836A (zh) * | 2022-04-19 | 2022-08-30 | 华为技术有限公司 | 垃圾回收的方法及电子设备 |
CN115016885A (zh) * | 2021-11-19 | 2022-09-06 | 荣耀终端有限公司 | 虚拟机垃圾回收运行方法及电子设备 |
CN115220881A (zh) * | 2021-04-19 | 2022-10-21 | 华为技术有限公司 | 进程管理方法、电子设备、进程管理系统以及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115629730A (zh) * | 2019-07-23 | 2023-01-20 | 华为技术有限公司 | 显示方法及相关装置 |
-
2022
- 2022-11-22 CN CN202310176154.5A patent/CN116303110B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、系统及方法 |
CN114048051A (zh) * | 2017-07-25 | 2022-02-15 | 华为技术有限公司 | 检测方法、设备及计算机可读存储介质 |
CN111371849A (zh) * | 2019-02-22 | 2020-07-03 | 华为技术有限公司 | 数据处理的方法和电子设备 |
CN114721812A (zh) * | 2021-01-04 | 2022-07-08 | 华为技术有限公司 | 内存释放方法及相关设备 |
CN115220881A (zh) * | 2021-04-19 | 2022-10-21 | 华为技术有限公司 | 进程管理方法、电子设备、进程管理系统以及存储介质 |
CN113722087A (zh) * | 2021-06-10 | 2021-11-30 | 荣耀终端有限公司 | 虚拟内存管理方法和电子设备 |
CN115016885A (zh) * | 2021-11-19 | 2022-09-06 | 荣耀终端有限公司 | 虚拟机垃圾回收运行方法及电子设备 |
CN114253737A (zh) * | 2022-02-28 | 2022-03-29 | 荣耀终端有限公司 | 电子设备及其内存回收方法、介质 |
CN114968836A (zh) * | 2022-04-19 | 2022-08-30 | 华为技术有限公司 | 垃圾回收的方法及电子设备 |
Non-Patent Citations (1)
Title |
---|
Android手机流畅度与电池续航力智能优化的设计与实现;杜海松;《中国优秀硕士学位论文全文数据库 (信息科技辑)》;I136-1521 * |
Also Published As
Publication number | Publication date |
---|---|
CN116303110A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111158910B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
CN111045814B (zh) | 资源调度方法和终端设备 | |
CN110888746B (zh) | 内存管理方法、装置、存储介质及电子设备 | |
WO2021057619A1 (zh) | 内存回收方法、装置、电子设备及存储介质 | |
CN115292052B (zh) | 内存回收方法、电子设备及计算机可读存储介质 | |
CN111506434B (zh) | 一种任务处理方法、装置及计算机可读存储介质 | |
WO2021057623A1 (zh) | 内存回收方法、装置、电子设备及存储介质 | |
WO2022179473A1 (zh) | 一种核间迁移的频率调整方法 | |
CN116700816A (zh) | 一种资源管理方法及电子设备 | |
CN116303110B (zh) | 一种内存垃圾的回收方法及电子设备 | |
CN116048742B (zh) | 一种数据处理方法及电子设备 | |
EP4280060A1 (en) | Power consumption control method and apparatus | |
CN116578422A (zh) | 资源分配方法和电子设备 | |
CN118069542A (zh) | 一种内存垃圾的回收方法及电子设备 | |
CN116361200B (zh) | 一种内存垃圾的回收方法及电子设备 | |
CN114003238B (zh) | 一种基于转码卡的容器部署方法、装置、设备及存储介质 | |
CN111901561B (zh) | 监控系统中的视频数据处理方法、装置、系统及存储介质 | |
CN114968546A (zh) | 一种负载处理方法及相关装置 | |
CN114546171A (zh) | 数据分发方法、装置、存储介质及电子设备 | |
CN113641674A (zh) | 一种自适应全局序号发生方法和装置 | |
CN113495787A (zh) | 资源分配方法、装置、存储介质及电子设备 | |
CN111078405A (zh) | 内存分配方法、装置、存储介质及电子设备 | |
WO2024087840A1 (zh) | 资源管控方法、装置、芯片、电子设备及介质 | |
CN112905351B (zh) | 一种gpu和cpu负载调度方法、装置、设备和介质 | |
CN117170857A (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 |