CN116955215A - 垃圾回收处理方法、装置及电子设备 - Google Patents

垃圾回收处理方法、装置及电子设备 Download PDF

Info

Publication number
CN116955215A
CN116955215A CN202310944146.0A CN202310944146A CN116955215A CN 116955215 A CN116955215 A CN 116955215A CN 202310944146 A CN202310944146 A CN 202310944146A CN 116955215 A CN116955215 A CN 116955215A
Authority
CN
China
Prior art keywords
time
garbage collection
collection instruction
ith
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310944146.0A
Other languages
English (en)
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.)
Vivo Mobile Communication Co Ltd
Original Assignee
Vivo Mobile Communication 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 Vivo Mobile Communication Co Ltd filed Critical Vivo Mobile Communication Co Ltd
Priority to CN202310944146.0A priority Critical patent/CN116955215A/zh
Publication of CN116955215A publication Critical patent/CN116955215A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

本申请公开了一种垃圾回收处理方法、装置及电子设备,属于计算机技术领域。该方法包括:接收目标进程发送的第i次垃圾回收指令,i为正整数;获取接收到所述第i次垃圾回收指令的第一时间,以及执行完成所述目标进程的第i‑1次垃圾回收指令的第二时间;在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,所述目标垃圾回收指令为所述第一时间与所述第三时间之间接收到的垃圾回收指令,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。

Description

垃圾回收处理方法、装置及电子设备
技术领域
本申请属于计算机技术领域,具体涉及一种垃圾回收处理方法、装置及电子设备。
背景技术
一种在Android操作***上的运行环境(Android RunTime,ART)虚拟机原生的垃圾回收(Garbage Collection,GC)是根据虚拟机中java堆大小的增长量来判定阈值的。
例如:当前进程的堆占用20M内存,那么当堆增长到40M左右时,就会触发一次GC。假设GC完之后回收掉10M垃圾,也就是还剩30M内存,那下次GC的阈值可能会是50M左右,当堆内存增长到50M时,又会触发一次GC。
但是,如果短时间内堆内存快速增长,就会连续触发GC。例如:当前进程在3秒内,堆的大小从20M迅速增长到了70M,每次垃圾回收都能回收掉10M左右的垃圾,那就可能会在40M、50M、60M、70M的节点分别触发一次GC。这样频繁的GC浪费了大量的中央处理器(Central Processing Unit,CPU)资源,且容易导致卡顿。
发明内容
本申请实施例的目的是提供一种垃圾回收处理方法、装置及电子设备,能够解决现有的GC不仅浪费大量CPU资源,还易导致卡顿的问题。
为了解决上述技术问题,本申请是这样实现的:
第一方面,本申请实施例提供了一种垃圾回收处理方法,包括:
接收目标进程发送的第i次垃圾回收指令,i为正整数;
获取接收到所述第i次垃圾回收指令的第一时间,以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间;
在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,所述目标垃圾回收指令为所述第一时间与所述第三时间之间接收到的垃圾回收指令,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。
第二方面,本申请实施例提供了一种垃圾回收处理装置,包括:
接收模块,用于接收目标进程发送的第i次垃圾回收指令,i为正整数;
获取模块,用于获取接收到所述第i次垃圾回收指令的第一时间,以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间;
执行模块,用于在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,所述目标垃圾回收指令为所述第一时间与所述第三时间之间接收到的垃圾回收指令,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请实施例中,接收目标进程发送的第i次垃圾回收指令,并获取接收到所述第i次垃圾回收指令的第一时间以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间,如果所述第一时间与所述第二时间的时间差小于第一时长,则表示第i-1次垃圾回收指令和第i次垃圾回收指令之间间隔时间较短,确定出第一时间之后的第三时间,将在第一时间与第三时间之间接收到的目标垃圾回收指令延迟至第三时间执行,由此降低一段时间内垃圾回收的次数,以此降低垃圾回收频率,达到节约CPU算力和减少卡顿的目的。
附图说明
图1是本申请实施例提供的垃圾回收处理方法的流程示意图;
图2是本申请实施例提供的垃圾回收过程的示意图;
图3是本申请实施例提供的一种垃圾回收处理装置的结构示意图;
图4是本申请实施例提供的一种电子设备的结构框图;
图5是本申请实施例提供的另一种电子设备的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的垃圾回收处理方法进行详细地说明。
如图1所示,本申请实施例提供了一种垃圾回收处理方法,具体可以包括如下步骤:
步骤101,接收目标进程发送的第i次垃圾回收指令,i为正整数。
具体的,设备中有多个进程,对于多个进程中的目标进程,接收目标进程发送的第i次垃圾回收指令,该第i次垃圾回收指令指的是对目标进程进行第i次垃圾回收的指令。
步骤102,获取接收到所述第i次垃圾回收指令的第一时间,以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间。
具体的,在接收到目标进程发送的第i次垃圾回收指令的情况下,获取接收到第i次垃圾回收指令的时间(即第一时间),并获取执行完目标进程的上次垃圾回收指令的时间(即第二时间),上次垃圾回收指令即为第i-1次垃圾回收指令。
需要说明的是,如果i为1,则第二时间为0。如果i为大于1的整数,则第二时间为第i-1次垃圾回收指令执行完成的时间。
步骤103,在所述第一时间与所述第二时间的时间差小于第一时长的情况下,在第三时间执行目标垃圾回收指令,所述目标垃圾回收指令为所述第一时间与所述第三时间之间接收到的垃圾回收指令,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。
具体的,在获取到第一时间和第二时间之后,计算第一时间与第二时间之间的时间差,即第一时间减去第二时间所得的差值,由于第一时间是第二时间之后的时间,因此第一时间减去第二时间的差值为正整数。
在得到第一时间与第二时间的差值之后,判断差值与第一时长的大小关系。如果差值大于或等于第一时长,则立刻执行第i次垃圾回收指令。如果时长差小于第一时长,则表示第i-1次垃圾回收指令和第i次垃圾回收指令之间间隔时间较短,确定出第一时间之后的第三时间,将在第一时间与第三时间之间接收到的目标垃圾回收指令延迟至第三时间执行,由此降低一段时间内垃圾回收的次数,以此降低垃圾回收频率,达到节约CPU算力和减少卡顿的目的。
其中,第一时长是用来衡量第一时间与第二时间之间的时间间隔是否较短的限值,如果第一时间与第二时间的差值小于第一时长,表示第一时间与第二时间的时间间隔较短,需要减少垃圾回收频率;如果第一时间与第二时间的差值大于或等于第一时长,则表示第一时间与第二时间的时间间隔较长,相邻两次的垃圾回收指令时间间隔较长,可以立即执行第一时间的垃圾回收指令(第i次垃圾回收指令)。
需要说明的是,第一时间与第三时间之间表示不仅包括第一时间之后、第三时间之前的时间,还包括第一时间和第三时间。换句话说,目标垃圾回收指令可以是第一时间接收到的垃圾回收指令,也可以是第三时间接收到的垃圾回收指令,也可以是第一时间之后、第三时间之前接收到的垃圾回收志林。
在本申请上述实施例中,接收目标进程发送的第i次垃圾回收指令,并获取接收到所述第i次垃圾回收指令的第一时间以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间,如果所述第一时间与所述第二时间的时间差小于第一时长,则表示第i-1次垃圾回收指令和第i次垃圾回收指令之间间隔时间较短,确定出第一时间之后的第三时间,将在第一时间与第三时间之间接收到的目标垃圾回收指令延迟至第三时间执行,由此降低一段时间内垃圾回收的次数,以此降低垃圾回收频率,达到节约CPU算力和减少卡顿的目的。
在所述目标垃圾回收指令为所述第i次垃圾回收指令的情况下,所述步骤103在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,具体可以包括如下两个实施例:
实施例一:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,获取设备的内存信息;
在所述设备的内存信息满足第一条件的情况下,在所述第三时间执行所述第i次垃圾回收指令。
具体的,在获取到第一时间和第二时间之后,计算第一时间与第二时间的差值,并判断差值与第一时长的大小关系。如果时间差小于第一时长,则获取设备的内存信息,并判断设备的内存信息是否满足第一条件,如果满足第一条件,则将第i次垃圾回收指令的执行时间延迟至第三时间,即在第三时间执行第i次垃圾回收指令。如果不满足第一条件,则立即执行第i次垃圾回收指令,在保证降低GC频率的同时,不会出现内存不够用的情况。
其中,上述第一条件可以包括以下三项内容:
第一项:所述目标进程的堆内存小于所述目标进程的内存阈值的第一比例。
在第一项中,在获取到设备的内存信息之后,判断目标进程的堆内存是否小于目标进程的内存阈值的第一比例,即判断目标进程的堆内存占目标进程的内存阈值的比例是否小于第一比例,如果目标进程的堆内存占目标进程的内存阈值的比例大于或等于第一比例(如:75%),则立即执行第i次垃圾回收指令,且不再对之后的垃圾回收指令的执行时间进行延迟。
例如:第一比例为75%,目标进程的堆内存为400M,目标进程的内存阈值为500M,堆内存大于内存阈值的75%,那么堆内存大于目标进程的内存阈值的第一比例,则立即执行第i次垃圾回收指令,且不再对之后的垃圾回收指令的执行时间进行延迟。
第二项:所述目标进程在所述第一时长内增加的内存小于所述内存阈值的第二比例。
在第二项中,在获取到设备的内存信息之后,判断目标进程在第一时长内增加的内存是否小于内存阈值的第二比例,即判断目标进程在第一时长内增加的内存占内存阈值的比例是否小于第二比例,如果目标进程在第一时长内增加的内存大于或等于内存阈值的第二比例(如:20%),则表示内存增长较快,则立即执行第i次垃圾回收指令,且不再对之后的垃圾回收指令的执行时间进行延迟。
例如:第一时长为3秒,目标进程在3秒内增长的内存为200M,内存阈值为500M,目标进程在3秒内增加的内存大于内存阈值的20%,则内存增长较快,需要立即执行第i次垃圾回收指令,且不再对之后的垃圾回收指令的执行时间进行延迟。
第三项:所述设备的使用内存小于所述设备内存阈值的第三比例。
在第三项中,在获取到设备的内存信息之后,判断设备整机的使用内存是否小于设备内存阈值(即设备的整机内存阈值)的第三比例,即设备的使用内存占设备内存阈值的比例是否小于第三比例,如果设备的使用内存大于或等于设备内存阈值的第三比例(如:90%),则表示设备的整机内存不足,立即执行第i次垃圾回收指令,且不再对之后的垃圾回收指令的执行时间进行延迟,直至解除整机内存不足的情况。
例如:设备内存阈值为8000M,设备的使用内存是7800M,设备的使用内存大于设备内存阈值的90%,则立即执行第i次垃圾回收指令,且不再对之后的垃圾回收指令的执行时间进行延迟。
需要说明的是,第一比例、第二比例、第三比例可以根据需要进行设定,不进行具体限定。
实施例二还可以包括如下两种情况:
情况一:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,监测中央处理器在第四时间与第五时间之间的运行状态,所述第四时间与所述第二时间的差值等于所述第一时长,所述第五时间与所述第二时间的差值大于所述第一时长;
若所述中央处理器在第三时间的运行状态为空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第四时间与所述第五时间之间的时间。
针对于情况一,如果第一时间与第二时间的差值小于第一时长,则监测中央处理器在第四时间与第五时间之间的运行状态,如果监测到中央处理器在第四时间与第五时间之间的第三时间的运行状态为空闲状态,则在第三时间执行第i次垃圾回收指令。
可以理解的是,第i次垃圾回收指令的执行时间至少可以延迟至第四时间,第四时间与第五时间作为等待时间段,如果在等待时间段内中央处理器处于空闲状态,则在中央处理器空闲状态时执行第i次垃圾回收指令,以保证中央处理器的运行效率,避免中央处理器在非空闲状态执行第i次垃圾回收指令过程中负载加重导致卡顿的问题。
需要说明的是,该第三时间可以是第四时间,第三时间也可以是第五时间,第三时间还可以是第四时间之后、第五时间之前的时间。
情况二:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,监测中央处理器在第四时间与第五时间之间的运行状态,所述第四时间与所述第二时间的差值等于所述第一时长,所述第五时间与所述第二时间的差值大于所述第一时长;
若所述中央处理器在所述第四时间与所述第五时间之间的运行状态均为非空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第五时间。
针对于情况二,如果第一时间与第二时间的差值小于第一时长,则监测中央处理器在第四时间与第五时间之间的运行状态,如果监测到中央处理器在第四时间与第五时间之间的运行状态均为非空闲状态,则在第五时间(即第三时间)执行第i次垃圾回收指令。
可以理解的是,第i次垃圾回收指令的执行时间至少可以延迟至第四时间,第四时间与第五时间作为等待时间段,如果在等待时间段内中央处理器始终处于非空闲状态,则在最晚的第五时间(即第三时间)执行第i次垃圾回收指令。
下面针对情况一和情况二进行举例说明:
例如:第二时间是第1秒,第一时间是第3秒,第一时长为5秒,第四时间是与第二时间的差值等于第一时长的时间,则第四时间为第6秒,第五时间与第二时间的差值大于第一时长,第五时间为6.5秒。
由于第一时间与第二时间的差值为2秒,2秒小于第一时长的5秒,则监测中央处理器在第6秒与第6.5秒之间的运行状态,如果监测到中央处理器在第6秒与第6.5秒之间的第三时间(如6.25秒)的运行状态为空闲状态,则在第6.25秒执行第i次垃圾回收指令。如果监测到中央处理器在第6秒与第6.5秒之间的运行状态均为非空闲状态,则在第6.5秒执行第i次垃圾回收指令。
在另一具体实施例中,在确定第三时间之后、且在达到第三时间之前,即正在延迟第i次垃圾回收指令的过程中,监测中央处理器的运行状态,如果在达到第三时间之前,中央处理器具有满足如下预设条件的时刻,则可以在满足预设条件的时刻立即执行第i次垃圾回收指令,可以在不加重中央处理器负载的情况下降低垃圾回收频率。
其中,预设条件包括单不限于以下至少一项:
设备的电量大于预设电量;
设备处于充电状态、且充电时间超过预设充电时长。
可以理解的是,在中央处理器满足预设条件的情况下,表示当前中央处理器较空闲、且电量充足,此时中央处理器的负载较小。由于垃圾回收需要消耗的资源主要是中央处理器,占用中央处理器可能出现的问题是增大耗电,以及抢占了其他需要使用中央处理器的线程。也就是说,执行垃圾回收指令的最好时机是:当前中央处理器较为空闲且电量充足。
作为一可选的具体实施例,在获取到第一时间和第二时间、且第一时间与第二时间的差值小于第一时长、且确定出执行目标垃圾回收指令的第三时间的情况下,所述方法还可以包括:
在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到对所述目标进程的第j次垃圾回收指令的情况下,将所述第j次垃圾回收指令确定为无效指令,j为大于i的整数。
具体的,在获取到第一时间和第二时间、且第一时间与第二时间的差值小于第一时长、且确定出执行目标垃圾回收指令的第三时间的情况下,监测在第一时间之后、第三时间以及第三时间之前的时间段中是否接收到其他垃圾回收指令。如果在第一时间之后、第三时间以及第三时间之前的时间段中接收到第j次垃圾回收指令,则表示在执行目标垃圾回收指令之前接收到第j次垃圾回收指令,需要将第j次垃圾回收指令确定为无效指令,相当于合并一段时间内连续触发的多次垃圾回收指令,能够在保证最终垃圾回收的效果的同时,进一步降低垃圾回收频率,达到节约CPU算力和减少卡顿的目的。
进一步的,上述将所述第j次垃圾回收指令确定为无效指令,具体可以包括:
在所述第i次垃圾回收指令和所述第j次垃圾回收指令满足第二条件的情况下,将所述第j次垃圾回收指令确定为无效指令;
其中,所述第二条件,包括以下任意一项:
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为部分垃圾回收指令;
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为全部垃圾回收指令;
所述第i次垃圾回收指令为全部垃圾回收指令、且所述第j次垃圾回收指令为部分垃圾回收指令。
在设备的ART虚拟机中,分为部分垃圾回收Sticky GC指令(即对目标进程的部分内存进行垃圾回收的指令)以及全部垃圾回收Full GC指令(即对目标进程的全部内存进行垃圾回收的指令)。其中,部分内存表征执行完成上次垃圾回收指令之后被新分配的新内存;全部内存表征执行完成上次垃圾回收指令之后所剩的内存和被分配的新内存之和,即全部内存包括部分内存以及执行完成上次垃圾回收指令之后所剩的内存。
如果在第一时间之后、第三时间以及第三时间之前的时间段中接收到第j次垃圾回收指令,则表示在执行目标垃圾回收指令之前接收到第j次垃圾回收指令,判断第i次垃圾回收指令和第j次垃圾回收指令是否满足第二条件,如果满足,则将第j次垃圾回收指令确定为无效指令。
换句话说,如果第i次垃圾回收指令为全部垃圾回收指令,在第i次垃圾回收指令之后接收到第j次垃圾回收指令,并且第j次垃圾回收指令也为全部垃圾回收指令,为了降低垃圾回收频率,将第j次垃圾回收指令作为无效指令。同理,如果第i次垃圾回收指令为部分垃圾回收指令,在第i次垃圾回收指令之后接收到第j次垃圾回收指令,并且第j次垃圾回收指令也为部分垃圾回收指令,为了降低垃圾回收频率,将第j次垃圾回收指令作为无效指令。并且,如果第i次垃圾回收指令为全部垃圾回收指令,在第i次垃圾回收指令之后接收到第j次垃圾回收指令,并且第j次垃圾回收指令为部分垃圾回收指令,由于全部垃圾回收指令中包括了对部分内存进行垃圾回收的指令(即部分垃圾回收指令),为了降低垃圾回收频率,将第j次垃圾回收指令作为无效指令。
下面通过一具体实施例对上述方案进行说明:
例如:如图2所示,第一时长为3秒,第1次垃圾回收GC指令到第5次GC指令均为全部垃圾回收指令。第1次GC指令在0秒接收到,并在1秒执行完成。如果在第1秒之后的3秒内又运行了四次GC,那就将第2次GC指令在第4秒执行,第3次GC指令、第4次GC指令和第5次GC指令作为无效指令,相当于在3秒内只运行一次GC指令。
由于设备的ART虚拟机采用的是识别可用内存的GC模式,在可用内存数量相同的情况下,每一次GC的运行时间基本相同。例如:
第1次:总内存40M,包括可用内存30M,垃圾10M;
第2次:总内存50M,包括可用内存40M,垃圾10M;
第3次:总内存60M,包括可用内存50M,垃圾10M;
第4次:总内存70M,包括可用内存60M,垃圾10M;
第5次:总内存100M,包括可用内存60M,垃圾40M。
这五种情况下的GC运行速度基本相同,现有技术的GC方法,第2次至第5步进行四次GC,最终回收了70M内存。假设上面四步是在3秒内发生,通过本申请的GC方法可以将第2次GC执行时间延迟3秒,就可以等到100M的时候才执行GC,在3秒内只进行了一次GC,最终也回收了70M内存,相当于减少了75%的GC,能够在保证最终GC的效果的同时,降低GC频率。
在一可选的具体实施例中,在所述目标垃圾回收指令为第k次垃圾回收指令的情况下,所述步骤103在第三时间执行目标垃圾回收指令,具体可以包括:
在所述第i次垃圾回收指令为部分垃圾回收指令,第k次垃圾回收指令为全部垃圾回收指令的情况下,取消执行所述第i次垃圾回收指令,并在第三时间执行所述第k次垃圾回收指令;
其中,所述第k次垃圾回收指令为在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到的垃圾回收指令,k为大于i的整数。
具体的,如果第i次垃圾回收指令为部分垃圾回收指令,在第一时间之后、第三时间或者第三时间之前接收到第k次垃圾回收指令,则判断第k次垃圾回收指令是部分垃圾回收指令还是全部垃圾回收指令。如果第k次垃圾回收指令为全部垃圾回收指令,由于全部垃圾回收指令中包括了对部分内存的垃圾回收指令(即部分垃圾回收指令),则取消执行所述第i次垃圾回收指令,并在第三时间执行所述第k次垃圾回收指令。
进一步的,如果全部垃圾回收指令对应的第一时长与部分垃圾回收指令对应的第一时长不同,则全部垃圾回收指令对应的第三时间与部分垃圾回收指令对应的第三时间也不同。
在垃圾回收过程中,大致可以分为初始化、标记、复制、清除这几个阶段。其中标记、复制两个阶段较为耗时,通常占用80%以上的时间,两个阶段大致分别各占一半的时间,也就是40%左右的时间。部分垃圾回收由于只针对上次垃圾回收后新分配的内存,所以标记时间非常少,且需要复制的内存数量也更少,所以部分垃圾回收的执行时间连全部垃圾回收的一半都不到。由此,可以设置全部垃圾回收指令对应的第一时长大于部分垃圾回收指令对应的第一时长。
例如:全部垃圾回收指令对应的第一时长为3秒,部分垃圾回收指令对应的第一时长为1秒。上次垃圾回收完成的时间是9:00:00,如果这次垃圾回收指令是部分垃圾回收指令,则这次垃圾回收指令对应的第三时间等于或晚于9:00:01。如果这次垃圾回收指令是全部垃圾回收指令,则这次垃圾回收指令对应的第三时间等于或晚于9:00:03。
由于全部垃圾回收指令对应的第三时间与部分垃圾回收指令对应的第三时间不同,则如果第i次垃圾回收指令为部分垃圾回收指令,则在第一时间之后、部分垃圾回收指令对应的第三时间或者第三时间之前接收到第k次垃圾回收指令,判断第k次垃圾回收指令是部分垃圾回收指令还是全部垃圾回收指令。如果第k次垃圾回收指令为全部垃圾回收指令,由于全部垃圾回收指令中包括了对部分内存的垃圾回收指令(即部分垃圾回收指令),则取消执行所述第i次垃圾回收指令,并在全部垃圾回收指令对应的第三时间或者部分垃圾回收指令对应的第三时间执行第k次垃圾回收指令。
下面通过一具体实施例对上述方案进行说明:
如果第i次垃圾回收指令为部分垃圾回收指令,部分垃圾回收指令对应的第一时长为3秒,全部垃圾回收指令对应的第一时长为5秒,第三时间与第二时间的差值等于第一时长。如果第i次垃圾回收指令正在延迟执行,在延迟的过程中,如果在第三时间之前收到了第k次垃圾回收指令,且第k次垃圾回收指令为全部垃圾回收指令,则直接取消第i次垃圾回收指令,只执行第k次垃圾回收指令,并按照第二时间开始计时,在第二时间之后5秒的时间(即全部垃圾回收指令对应的第三时间)执行第k次垃圾回收指令,或者在第二时间之后3秒的时间(即部分垃圾回收指令对应的第三时间)执行第k次垃圾回收指令。
其中,第i次垃圾回收指令正在延迟执行指的是第i次垃圾回收指令从第一时间向第三时间延迟的过程中,即当前时间处于第一时间与第三时间之间,但是不包含第一时间和第三时间。
综上所述,在本申请上述实施例中,接收目标进程发送的第i次垃圾回收指令,并获取接收到所述第i次垃圾回收指令的第一时间以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间,如果所述第一时间与所述第二时间的时间差小于第一时长,则表示第i-1次垃圾回收指令和第i次垃圾回收指令之间间隔时间较短,确定出第一时间之后的第三时间,将在第一时间与第三时间之间接收到的目标垃圾回收指令延迟至第三时间执行,由此降低一段时间内垃圾回收的次数,以此降低垃圾回收频率,达到节约CPU算力和减少卡顿的目的。
本申请实施例提供的垃圾回收处理方法,执行主体可以为垃圾回收处理装置。本申请实施例中以垃圾回收处理装置执行垃圾回收处理方法为例,说明本申请实施例提供的垃圾回收处理装置。
如图3所示,本申请实施例还提供了一种垃圾回收处理装置300,包括:
接收模块301,用于接收目标进程发送的第i次垃圾回收指令,i为正整数;
获取模块302,用于获取接收到所述第i次垃圾回收指令的第一时间,以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间;
执行模块303,用于在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,所述目标垃圾回收指令为所述第一时间与所述第三时间之间接收到的垃圾回收指令,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。
在本申请上述实施例中,接收目标进程发送的第i次垃圾回收指令,并获取接收到所述第i次垃圾回收指令的第一时间以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间,如果所述第一时间与所述第二时间的时间差小于第一时长,则表示第i-1次垃圾回收指令和第i次垃圾回收指令之间间隔时间较短,确定出第一时间之后的第三时间,将在第一时间与第三时间之间接收到的目标垃圾回收指令延迟至第三时间执行,由此降低一段时间内垃圾回收的次数,以此降低垃圾回收频率,达到节约CPU算力和减少卡顿的目的。
可选的,所述目标垃圾回收指令为所述第i次垃圾回收指令;
所述执行模块303,具体用于:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,获取设备的内存信息;
在所述设备的内存信息满足第一条件的情况下,在所述第三时间执行所述第i次垃圾回收指令;
其中,所述第一条件包括:
所述目标进程的堆内存小于所述目标进程的内存阈值的第一比例;
所述目标进程在所述第一时长内增加的内存小于所述内存阈值的第二比例;
所述设备的使用内存小于所述设备内存阈值的第三比例。
可选的,所述目标垃圾回收指令为所述第i次垃圾回收指令;
所述执行模块303,具体用于:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,监测中央处理器在第四时间与第五时间之间的运行状态,所述第四时间与所述第二时间的差值等于所述第一时长,所述第五时间与所述第二时间的差值大于所述第一时长;
若所述中央处理器在第三时间的运行状态为空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第四时间与所述第五时间之间的时间;
若所述中央处理器在所述第四时间与所述第五时间之间的运行状态均为非空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第五时间。
可选的,所述目标垃圾回收指令为第k次垃圾回收指令;
所述执行模块303,具体用于:
在所述第一时间与所述第二时间的差值小于第一时长,所述第i次垃圾回收指令为部分垃圾回收指令,所述第k次垃圾回收指令为全部垃圾回收指令的情况下,取消执行所述第i次垃圾回收指令,并在第三时间执行所述第k次垃圾回收指令;
其中,所述第k次垃圾回收指令为在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到的垃圾回收指令,k为大于i的整数,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。
可选的,所述装置还包括:
确定模块,用于在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到对所述目标进程的第j次垃圾回收指令的情况下,将所述第j次垃圾回收指令确定为无效指令,j为大于i的整数。
可选的,所述确定模块,具体用于:
在所述第i次垃圾回收指令和所述第j次垃圾回收指令满足第二条件的情况下,将所述第j次垃圾回收指令确定为无效指令;
其中,所述第二条件,包括以下任意一项:
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为部分垃圾回收指令;
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为全部垃圾回收指令;
所述第i次垃圾回收指令为全部垃圾回收指令、且所述第j次垃圾回收指令为部分垃圾回收指令。
综上所述,在本申请上述实施例中,接收目标进程发送的第i次垃圾回收指令,并获取接收到所述第i次垃圾回收指令的第一时间以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间,如果所述第一时间与所述第二时间的时间差小于第一时长,则表示第i-1次垃圾回收指令和第i次垃圾回收指令之间间隔时间较短,确定出第一时间之后的第三时间,将在第一时间与第三时间之间接收到的目标垃圾回收指令延迟至第三时间执行,由此降低一段时间内垃圾回收的次数,以此降低垃圾回收频率,达到节约CPU算力和减少卡顿的目的。
本申请实施例中的垃圾回收处理装置可以是电子设备,也可以是电子设备中的部件,例如集成电路或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobilepersonal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为服务器、网络附属存储器(Network Attached Storage,NAS)、个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的垃圾回收处理装置可以为具有操作***的装置。该操作***可以为安卓(Android)操作***,可以为ios操作***,还可以为其他可能的操作***,本申请实施例不作具体限定。
本申请实施例提供的垃圾回收处理装置能够实现图1至图2的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选地,如图4所示,本申请实施例还提供一种电子设备400,包括处理器401和存储器402,存储器402上存储有可在所述处理器401上运行的程序或指令,该程序或指令被处理器401执行时实现上述垃圾回收处理方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述所述的移动电子设备和非移动电子设备。
图5为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备1000包括但不限于:射频单元1001、网络模块1002、音频输出单元1003、输入单元1004、传感器1005、显示单元1006、用户输入单元1007、接口单元1008、存储器1009、以及处理器1010等部件。
本领域技术人员可以理解,电子设备1000还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理***与处理器1010逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。图5中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,所述处理器1010,用于接收目标进程发送的第i次垃圾回收指令,i为正整数;
获取接收到所述第i次垃圾回收指令的第一时间,以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间;
在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,所述目标垃圾回收指令为所述第一时间与所述第三时间之间接收到的垃圾回收指令,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。
在本申请上述实施例中,接收目标进程发送的第i次垃圾回收指令,并获取接收到所述第i次垃圾回收指令的第一时间以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间,如果所述第一时间与所述第二时间的时间差小于第一时长,则表示第i-1次垃圾回收指令和第i次垃圾回收指令之间间隔时间较短,确定出第一时间之后的第三时间,将在第一时间与第三时间之间接收到的目标垃圾回收指令延迟至第三时间执行,由此降低一段时间内垃圾回收的次数,以此降低垃圾回收频率,达到节约CPU算力和减少卡顿的目的。
可选的,所述目标垃圾回收指令为所述第i次垃圾回收指令;
所述处理器1010在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令时,具体用于:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,获取设备的内存信息;
在所述设备的内存信息满足第一条件的情况下,在所述第三时间执行所述第i次垃圾回收指令;
其中,所述第一条件包括:
所述目标进程的堆内存小于所述目标进程的内存阈值的第一比例;
所述目标进程在所述第一时长内增加的内存小于所述内存阈值的第二比例;
所述设备的使用内存小于所述设备内存阈值的第三比例。
可选的,所述目标垃圾回收指令为所述第i次垃圾回收指令;
所述处理器1010在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令时,具体用于:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,监测中央处理器在第四时间与第五时间之间的运行状态,所述第四时间与所述第二时间的差值等于所述第一时长,所述第五时间与所述第二时间的差值大于所述第一时长;
若所述中央处理器在第三时间的运行状态为空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第四时间与所述第五时间之间的时间;
若所述中央处理器在所述第四时间与所述第五时间之间的运行状态均为非空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第五时间。
可选的,所述目标垃圾回收指令为第k次垃圾回收指令;
所述处理器1010在第三时间执行目标垃圾回收指令时,具体用于:
在所述第i次垃圾回收指令为部分垃圾回收指令,所述第k次垃圾回收指令为全部垃圾回收指令的情况下,取消执行所述第i次垃圾回收指令,并在第三时间执行所述第k次垃圾回收指令;
其中,所述第k次垃圾回收指令为在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到的垃圾回收指令,k为大于i的整数。
可选的,所述处理器1010,还用于:
在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到对所述目标进程的第j次垃圾回收指令的情况下,将所述第j次垃圾回收指令确定为无效指令,j为大于i的整数。
可选的,所述处理器1010在将所述第j次垃圾回收指令确定为无效指令时,具体用于:
在所述第i次垃圾回收指令和所述第j次垃圾回收指令满足第二条件的情况下,将所述第j次垃圾回收指令确定为无效指令;
其中,所述第二条件,包括以下任意一项:
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为部分垃圾回收指令;
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为全部垃圾回收指令;
所述第i次垃圾回收指令为全部垃圾回收指令、且所述第j次垃圾回收指令为部分垃圾回收指令。
综上所述,在本申请上述实施例中,接收目标进程发送的第i次垃圾回收指令,并获取接收到所述第i次垃圾回收指令的第一时间以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间,如果所述第一时间与所述第二时间的时间差小于第一时长,则表示第i-1次垃圾回收指令和第i次垃圾回收指令之间间隔时间较短,确定出第一时间之后的第三时间,将在第一时间与第三时间之间接收到的目标垃圾回收指令延迟至第三时间执行,由此降低一段时间内垃圾回收的次数,以此降低垃圾回收频率,达到节约CPU算力和减少卡顿的目的。
应理解的是,本申请实施例中,输入单元1004可以包括图形处理器(GraphicsProcessing Unit,GPU)10041和麦克风10042,图形处理器10041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元1006可包括显示面板10061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板10061。用户输入单元1007包括触控面板10071以及其他输入设备10072中的至少一种。触控面板10071,也称为触摸屏。触控面板10071可包括触摸检测装置和触摸控制器两个部分。其他输入设备10072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器1009可用于存储软件程序以及各种数据。存储器1009可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作***、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器1009可以包括易失性存储器或非易失性存储器,或者,存储器1009可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器1009包括但不限于这些和任意其它适合类型的存储器。
处理器1010可包括一个或多个处理单元;可选的,处理器1010集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作***、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器1010中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述垃圾回收处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述垃圾回收处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为***级芯片、***芯片、芯片***或片上***芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述垃圾回收处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (13)

1.一种垃圾回收处理方法,其特征在于,包括:
接收目标进程发送的第i次垃圾回收指令,i为正整数;
获取接收到所述第i次垃圾回收指令的第一时间,以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间;
在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,所述目标垃圾回收指令为所述第一时间与所述第三时间之间接收到的垃圾回收指令,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。
2.根据权利要求1所述的方法,其特征在于,所述目标垃圾回收指令为所述第i次垃圾回收指令;
所述在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,包括:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,获取设备的内存信息;
在所述设备的内存信息满足第一条件的情况下,在所述第三时间执行所述第i次垃圾回收指令;
其中,所述第一条件包括:
所述目标进程的堆内存小于所述目标进程的内存阈值的第一比例;
所述目标进程在所述第一时长内增加的内存小于所述内存阈值的第二比例;
所述设备的使用内存小于所述设备内存阈值的第三比例。
3.根据权利要求1所述的方法,其特征在于,所述目标垃圾回收指令为所述第i次垃圾回收指令;
所述在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,包括:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,监测中央处理器在第四时间与第五时间之间的运行状态,所述第四时间与所述第二时间的差值等于所述第一时长,所述第五时间与所述第二时间的差值大于所述第一时长;
若所述中央处理器在第三时间的运行状态为空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第四时间与所述第五时间之间的时间;
若所述中央处理器在所述第四时间与所述第五时间之间的运行状态均为非空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第五时间。
4.根据权利要求1所述的方法,其特征在于,所述目标垃圾回收指令为第k次垃圾回收指令;
所述在第三时间执行目标垃圾回收指令,包括:
在所述第i次垃圾回收指令为部分垃圾回收指令,所述第k次垃圾回收指令为全部垃圾回收指令的情况下,取消执行所述第i次垃圾回收指令,并在第三时间执行所述第k次垃圾回收指令;
其中,所述第k次垃圾回收指令为在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到的垃圾回收指令,k为大于i的整数。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到对所述目标进程的第j次垃圾回收指令的情况下,将所述第j次垃圾回收指令确定为无效指令,j为大于i的整数。
6.根据权利要求5所述的方法,其特征在于,所述将所述第j次垃圾回收指令确定为无效指令,包括:
在所述第i次垃圾回收指令和所述第j次垃圾回收指令满足第二条件的情况下,将所述第j次垃圾回收指令确定为无效指令;
其中,所述第二条件,包括以下任意一项:
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为部分垃圾回收指令;
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为全部垃圾回收指令;
所述第i次垃圾回收指令为全部垃圾回收指令、且所述第j次垃圾回收指令为部分垃圾回收指令。
7.一种垃圾回收处理装置,其特征在于,包括:
接收模块,用于接收目标进程发送的第i次垃圾回收指令,i为正整数;
获取模块,用于获取接收到所述第i次垃圾回收指令的第一时间,以及执行完成所述目标进程的第i-1次垃圾回收指令的第二时间;
执行模块,用于在所述第一时间与所述第二时间的差值小于第一时长的情况下,在第三时间执行目标垃圾回收指令,所述目标垃圾回收指令为所述第一时间与所述第三时间之间接收到的垃圾回收指令,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。
8.根据权利要求7所述的装置,其特征在于,所述目标垃圾回收指令为所述第i次垃圾回收指令;
所述执行模块,具体用于:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,获取设备的内存信息;
在所述设备的内存信息满足第一条件的情况下,在所述第三时间执行所述第i次垃圾回收指令;
其中,所述第一条件包括:
所述目标进程的堆内存小于所述目标进程的内存阈值的第一比例;
所述目标进程在所述第一时长内增加的内存小于所述内存阈值的第二比例;
所述设备的使用内存小于所述设备内存阈值的第三比例。
9.根据权利要求7所述的装置,其特征在于,所述目标垃圾回收指令为所述第i次垃圾回收指令;
所述执行模块,具体用于:
在所述第一时间与所述第二时间的差值小于第一时长的情况下,监测中央处理器在第四时间与第五时间之间的运行状态,所述第四时间与所述第二时间的差值等于所述第一时长,所述第五时间与所述第二时间的差值大于所述第一时长;
若所述中央处理器在第三时间的运行状态为空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第四时间与所述第五时间之间的时间;
若所述中央处理器在所述第四时间与所述第五时间之间的运行状态均为非空闲状态,则在所述第三时间执行所述第i次垃圾回收指令,所述第三时间为所述第五时间。
10.根据权利要求7所述的装置,其特征在于,所述目标垃圾回收指令为第k次垃圾回收指令;
所述执行模块,具体用于:
在所述第一时间与所述第二时间的差值小于第一时长,所述第i次垃圾回收指令为部分垃圾回收指令,所述第k次垃圾回收指令为全部垃圾回收指令的情况下,取消执行所述第i次垃圾回收指令,并在第三时间执行所述第k次垃圾回收指令;
其中,所述第k次垃圾回收指令为在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到的垃圾回收指令,k为大于i的整数,所述第三时间与所述第二时间的差值大于或者等于所述第一时长。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:
确定模块,用于在所述第一时间之后、在所述第三时间以及所述第三时间之前接收到对所述目标进程的第j次垃圾回收指令的情况下,将所述第j次垃圾回收指令确定为无效指令,j为大于i的整数。
12.根据权利要求11所述的装置,其特征在于,所述确定模块,具体用于:
在所述第i次垃圾回收指令和所述第j次垃圾回收指令满足第二条件的情况下,将所述第j次垃圾回收指令确定为无效指令;
其中,所述第二条件,包括以下任意一项:
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为部分垃圾回收指令;
所述第j次垃圾回收指令与所述第i次垃圾回收指令均为全部垃圾回收指令;
所述第i次垃圾回收指令为全部垃圾回收指令、且所述第j次垃圾回收指令为部分垃圾回收指令。
13.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-6任一项所述的垃圾回收处理方法的步骤。
CN202310944146.0A 2023-07-28 2023-07-28 垃圾回收处理方法、装置及电子设备 Pending CN116955215A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310944146.0A CN116955215A (zh) 2023-07-28 2023-07-28 垃圾回收处理方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310944146.0A CN116955215A (zh) 2023-07-28 2023-07-28 垃圾回收处理方法、装置及电子设备

Publications (1)

Publication Number Publication Date
CN116955215A true CN116955215A (zh) 2023-10-27

Family

ID=88458015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310944146.0A Pending CN116955215A (zh) 2023-07-28 2023-07-28 垃圾回收处理方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN116955215A (zh)

Similar Documents

Publication Publication Date Title
CN111158910B (zh) 内存管理方法、装置、存储介质及电子设备
CN109740732B (zh) 神经网络处理器、卷积神经网络数据复用方法及相关设备
CN105159776B (zh) 进程处理方法及装置
CN110888746A (zh) 内存管理方法、装置、存储介质及电子设备
CN111274039B (zh) 内存回收方法、装置、存储介质及电子设备
CN111984130A (zh) 快捷操作方法、装置及电子设备
CN115509953A (zh) 内存回收方法及其装置
CN111475299B (zh) 内存分配方法、装置、存储介质及电子设备
CN113268438B (zh) 内存回收方法、装置和电子设备
WO2024078494A1 (zh) 线程管理方法、装置、电子设备及存储介质
CN106648916B (zh) 计步器消息的上报方法及装置
WO2023284877A1 (zh) 检测方法、装置及电子设备
CN116955215A (zh) 垃圾回收处理方法、装置及电子设备
CN104699513A (zh) 一种文件处理方法及装置
CN115220565A (zh) 基频处理器bp的休眠控制方法、装置及电子设备
CN113010004A (zh) 异常耗电处理方法、装置和电子设备
CN112965920A (zh) 内存管理方法、装置、电子设备以及存储介质
CN117311967A (zh) 内存处理方法、装置及电子设备
CN115994032A (zh) 缓存管理方法、装置、电子设备及介质
CN116795538A (zh) 编译进程管理方法、装置及电子设备
CN116643891A (zh) 应用进程控制方法、装置和电子设备
CN116991605A (zh) 进程处理方法、装置、电子设备和可读存储介质
CN117149391A (zh) 线程管理方法、装置及电子设备
CN117111721A (zh) 功耗管理的方法、装置、电子设备及存储介质
CN116954911A (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