CN115292052B - 内存回收方法、电子设备及计算机可读存储介质 - Google Patents
内存回收方法、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115292052B CN115292052B CN202211179579.3A CN202211179579A CN115292052B CN 115292052 B CN115292052 B CN 115292052B CN 202211179579 A CN202211179579 A CN 202211179579A CN 115292052 B CN115292052 B CN 115292052B
- Authority
- CN
- China
- Prior art keywords
- thread
- electronic device
- application
- memory
- triggering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/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
-
- 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)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及存储器垃圾回收技术领域,尤其涉及一种内存回收方法、电子设备及其介质。在该方法中,电子设备结合当前的运行状态,以及各应用程序在触发对应进程的GC线程时发生卡顿后影响用户体验的程度,决定是否触发GC。如果电子设备是高负载的使用场景,例如CPU使用率较高,或当前应用程序在触发对应进程的GC线程时发生卡顿后影响用户体验的程度较高,则延迟触发GC。如果电子设备不是高负载的使用场景,例如CPU使用率较低,且当前应用程序在触发对应进程的GC线程时发生卡顿后影响用户体验的程度较低,则触发并执行GC实现堆内存回收。通过上述方法,减少GC实际运行时长,提高GC效率,并且避免触发GC时执行的线程发生卡顿影响用户操作体验。
Description
技术领域
本申请涉及存储器垃圾回收(garbage collection,GC)技术领域,尤其涉及一种内存回收方法、电子设备及计算机可读存储介质。
背景技术
垃圾回收(garbage collection,GC)是一种存储器管理机制。当某个应用程序占用的内存空间不再继续被该应用程序访问的时候,该应用程序会自动触发GC机制,回收这部分不再被使用的内存,以使其他应用程序能够使用这些空闲内存,提高内存使用率。
但是,目前的GC触发机制较为单一,因此存在触发GC时机不当,导致前台正在运行的应用程序出现卡顿或者GC实际运行的时长大大增加影响内存回收的效率,进而影响用户体验。
发明内容
为了解决上述问题,本申请提供一种内存回收方法、电子设备及计算机可读存储介质。
第一方面,本申请实施例提供了一种内存回收方法,应用于电子设备,该方法包括:运行第一应用程序;在第一应用程序对应的第一进程的堆内存使用数据满足内存回收条件的情况下,获取当前电子设备运行状态数据以及第一进程对应的第一线程的运行状态数据;对应于电子设备的运行状态以及第一线程的运行状态满足延迟回收触发条件,延迟触发第一线程的垃圾回收线程,对应于电子设备的运行状态以及第一线程的运行状态不满足延迟回收触发条件,触发第一线程的垃圾回收线程。
在一些实现方式中,电子设备包括但不限于智能手机、平板电脑等设备,本申请对此不作限制。
在一些实现方式中,第一应用程序包括但不限于购物应用、聊天应用等应用程序,本申请对此不作限制。
可以理解,运行第一应用程序,系统会为该应用程序创建对应的进程,并且为该进程分配堆内存使用空间。在该进程使用的堆内存大小大于或等于该进程对应的GC水线值的情况下,即认为第一应用程序的进程的堆内存使用数据满足内存回收条件。其中,GC水线值是根据该进程当前使用的堆内存大小以及预设的堆内存使用率(即下文的目标利用率)确定的。因此,在一些实现方式中,也可以通过确定该进程对应的堆内存的使用率是否大于或等于目标利用率,确定第一应用程序的进程的堆内存使用数据是否满足内存回收条件。当该进程对应的堆内存的使用率大于或等于目标利用率的情况下,确定第一应用程序的进程的堆内存使用数据满足内存回收条件。
在一些实现方式中,在确定第一应用程序的第一进程的堆内存使用数据满足内存回收条件的情况下,进一步根据当前电子设备的运行状态以及当前第一进程对应的第一线程的运行状态,确定是否触发并执行垃圾回收线程。
在一些实现方式中,获取当前电子设备运行状态数据的目的是为了确定当前电子设备是否处于高负载运行状态。更具体地在一些实现方式中,可以通过获取当前电子设备的CPU使用率,确定当前电子设备是否处于高负载运行状态,如果当前电子设备的CPU使用率大于或等于第一阈值,则可以确定当前电子设备处于高负载运行状态。
在一些实现方式中,当电子设备处于高负载运行状态,或当前第一进程对应的第一线程的运行状态满足延迟回收触发条件的情况下,为了避免在高负载运行状态下触发垃圾回收线程,导致垃圾回收线程实际运行时间过长,以及避免触发并执行垃圾回收线程,影响第一线程运行,进而影响用户体验,电子设备延迟触发并执行第一进程的垃圾回收线程。
在一些实现方式中,当电子设备不是处于高负载运行状态,且当前第一进程对应的第一线程的运行状态不满足延迟回收触发条件的情况下,由于此时触发并执行GC,并不会影响第一线程的运行,或者即使影响第一线程的运行,但并不会影响到用户操作体验,电子设备触发并执行第一进程的垃圾回收线程。
通过上述方法,可使电子设备处于高负载情况下,延迟触发垃圾回收线程,以避免垃圾回收线程实际运行时长,或者当电子设备当前运行的应用程序的线程发生卡顿会特别影响用户操作体验的情况下,延迟触发垃圾回收线程,以使该线程能够被流畅地执行,避免卡顿影响用户操作体验。
结合上述第一方面,在第一方面的可能的实现方式中,电子设备运行状态数据包括电子设备的处理器的使用率,第一线程的运行状态数据包括第一线程的类型,延迟回收触发条件包括:电子设备的处理器使用率小于第一阈值或第一线程的类型是预设类型。在一些实现方式中,第一阈值为经验值或实验值,本申请对此不作限制。
结合上述第一方面以及可能的实现方式,在第一方面的可能的实现方式中,第一进程的堆内存使用数据包括第一进程的堆内存使用率,内存回收条件包括第一进程的堆内存使用率大于或等于预设堆内存使用率(也即下文中的目标利用率)。
结合上述第一方面以及可能的实现方式,在第一方面的可能的实现方式中,第一线程的类型包括第一线程的优先级,第一线程的优先级是根据在执行第一线程的过程中发生中断时,对用户的影响程度确定的,其中,对用户的影响程度越高第一线程的优先级越高。
通过这种方法,可以实现根据线程执行过程中发生中断,对用户的影响程度,决定是否触发并执行垃圾回收线程,在线程执行过程中发生中断,对用户的影响程度很小的情况下,电子设备触发并执行垃圾回收线程,在线程执行过程中发生中断,对用户影响程度较大的情况下,电子设备延迟触发并执行垃圾回收线程,以在更合适的时机触发垃圾回收线程,进一步提高用户体验。
结合上述第一方面以及可能的实现方式,在第一方面的可能的实现方式中,预设类型的线程包括优先级大于或等于预设优先级的线程。
结合上述第一方面以及可能的实现方式,在第一方面的可能的实现方式中,第一线程的类型包括第一线程对应的二进制编码,预设类型包括预设的二进制编码。
结合上述第一方面以及可能的实现方式,在第一方面的可能的实现方式中,第一应用程序为预设类型的应用程序。
结合上述第一方面以及可能的实现方式,在第一方面的可能的实现方式中,预设类型的应用程序不包括运行在电子设备后台的应用程序。
可以理解,由于运行在后台的应用程序,即使在执行过程中发生卡顿也不会影响用户体验,因此,当运行在后台的应用程序对应的进程满足内存回收条件时,电子设备可以触发并执行该进程对应的垃圾回收线程。
第二方面,本申请实施例还提供了一种电子设备,该电子设备包括存储器,存储有计算机程序指令;处理器,所述处理器和存储器耦合,当所述存储器存储的计算机程序指令被所述处理器执行时使得所述电子设备实现上述第一方面以及第一方面的任一种可能的实现方式中任一项的方法。
第三方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述第一方面以及第一方面的任一种可能的实现方式中任一项的方法。
第四方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行上述第一方面以及第一方面的任一种可能的实现方式中任一项的方法。
可以理解的是,上述第二方面至第四方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1根据本申请的实施例示出了一种触发GC的原理示意图;
图2a根据本申请的实施例示出了一种用户滑动购物应用界面的界面示意图;
图2b根据本申请的实施例示出了一种购物应用界面发生卡顿时的界面示意图;
图2c根据本申请的实施例示出了一种购物应用界面发生卡顿后正常显示的界面示意图;
图3根据本申请的实施例示出了一种电子设备的系统结构示意框图;
图4根据本申请实施例示出了图3的系统结构中各模块的交互流程示意图;
图5根据本申请实施例示出了本申请内存回收方法的流程示意图;
图6根据本申请实施例示出了电子设备的硬件结构图。
具体实施方式
本申请提供了一种内存回收方法、电子设备及计算机可读存储介质。下面将使用本领域技术人员通常采用的术语来描述说明性实施例的各个方面。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A或B,单独存在B这三种情况。另外,在本申请实施的描述中,“多个”是指两个或多于两个。
以下,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性或隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”、“第三”的特征可以明示或隐含地包含一个或更多该特征。
本申请各实施例提供的内存回收方法可以应用于手机、平板电脑、可穿戴设备、车载设备、增强现实(augment reality,AR)/虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)等电子设备上,本申请实施例对终端设备的具体类型不作任何限制。
电子设备上可安装使用例如Java语言编写的各种各样的应用程序(application,APP)或服务(service)。因为Java语言的跨平台性以及开放性,为了在多种平台上实现兼容,电子设备在运行使用Java语言编写的APP时,需要创建Java虚拟机(virtual machine,JVM),JVM中存在有Java的垃圾回收(garbage collection,GC)线程。当APP或服务使用的堆内存不足时,JVM将启动GC线程执行GC,以回收不再继续被使用的堆内存,使这部分内存可以被其他应用程序使用,提高内存的使用率。
以具备安卓系统的电子设备运行购物应用为例进行说明。当电子设备运行购物应用时,通常会启动购物应用的一个或多个进程(如购物应用的界面对应的进程1,购物应用后台更新服务对应的进程2),每个进程都将对应一个虚拟机,且每个进程中都包含一个HeapTaskDaemon线程,该线程可以实现垃圾回收(GC)的功能。该GC线程负责监控本进程对应的虚拟机堆内存的使用情况,并根据本进程对应的堆内存的使用情况确定是否启动GC过程。
在一些实现方式中,可以通过设置该进程的堆内存的最大使用率,即本进程能够使用的最大堆内存使用率,来控制触发GC线程的时机。具体地,当系统内核为该进程分配的堆内存的使用率超过该最大使用率时,该进程将启动GC线程对该进程的堆内存进行回收。可以理解的是,每次GC之后已经使用(或称被占用)的堆内存和本进程能够使用的最大堆内存(包括本进程已经使用的堆内存和空闲的堆内存)有一个合适的比例(即堆内存目标利用率,通常为0.75,可简称为目标利用率),可以尽量地减少GC的次数。该堆内存目标利用率可以为默认值,也可以为操作系统为所有进程统一设置的,或者还可以为操作系统为不同的APP或者不同的进程分别设置的,本申请对此不作限制。
图1示出了一种触发GC的原理示意图。如图1所示,used size表示进程当前占用的堆内存大小,free size表示空闲的堆内存大小,max size为该进程分配的堆内存的最大值,water mark表示GC水线值,在used size接近水线值的情况下,也即free size为0,usedsize/(used size+free size)接近1时,即触发GC,然后重新针对该进程分配内存。
在一些实现方式中,由于堆内存的最大使用率(或者目标利用率是预先设置的),而进程当前使用的堆内存(used size)也是可以确定的,因此,可以利用used size除以目标利用率得到该进程对应的堆内存的GC水线值,然后在该进程使用的内存接近甚至超过GC水线值时,即触发GC并执行线程。例如,假设进程当前使用的堆内存(used size)为75兆(M),该进程对应的目标利用率为0.75,因此可以计算得到该进程对应的GC水线值应为75/0.75=100M。那么当电子设备监测到该进程使用的堆内存大于或等于100M时,即触发并执行GC。
在一些场景下,由于GC的工作原理,当GC线程与其他进程或线程同时在运行时,为避免堆内存分配出现混乱导致其他线程无法运行,一般情况下,GC线程无法与其他线程并行运行。例如,当电子设备加载一些应用程序的插件时,如果同时触发的GC线程那么要么先执行GC线程,要么先执行其他线程,而当其中一方被执行时,另一方需要等待对方执行结束才会执行。其中,插件指的是遵循一定规范的应用程序接口编写出来的程序。它可以为应用程序实现某些特殊的功能,比如对于购物应用而言,插件可以增加购物应用中的快速筛选折扣满足一定条件商品的功能。
因此可能出现一种场景,当GC线程被触发时,由于电子设备CPU正在运行多个其他进程,所以需要等待线程运行结束后,才执行GC。这就使GC线程的实际运行时长变长(实际执行GC的时长+等待其他进程运行结束的时长),比如如果触发GC后即执行GC需要308毫秒(ms),但是由于等待其他线程执行结束耗时为1440ms,进而使GC实际运行的时长变为(308+1440)毫秒,降低了GC执行的效率。
而且,对于正在运行的前台应用程序,比如购物应用,当它对应的线程或插件被执行时,如果同时触发了该应用程序的GC线程,那么如果等待GC执行结束后再执行该应用程序的其他线程或插件,可能导致前台应用程序出现卡顿或丢帧的情况,影响用户体验。
示例性地,图2a至图2c示出了电子设备在运行购物应用时,同时触发购物应用进程中的GC线程时的界面变化示意图。
如图2a所示,电子设备1显示第一购物界面10,该界面展示多种商品信息。用户可以通过左滑或右滑切换当前显示的界面,以查看更多其他商品信息。当电子设备在执行购物应用的GC线程时,如果用户也在向右滑切换第一购物界面10,那么购物应用页面切换线程会发生卡顿,也即如图2b所示,界面10切换到一半时发生卡顿。然后等待若干秒直至GC线程执行结束后(比如240毫秒后),电子设备1才会显示如图2c所示的切换后的第二购物界面20。这样会影响用户体验。
为了解决上述技术问题,本申请提供了一种内存回收方法。在本申请的方法中,电子设备结合电子设备当前运行状态(或者使用率),以及各应用程序在触发对应进程的GC线程时发生卡顿后影响用户体验的程度,决定是否触发GC。其中,电子设备当前的运行状态可以通过电子设备当前CPU的使用情况、I/O读写情况、带宽等数据来确定,本申请对此不作限制。在本申请的各实施例中,以通过电子设备当前CPU使用率确定电子设备当前运行状态为例进行说明。
如果电子设备CPU是高负载的使用场景,也即电子设备CPU使用率较高,或当前应用程序在触发对应进程的GC线程时发生卡顿后影响用户体验的程度较高,则延迟触发GC。如果电子设备CPU不是高负载的使用场景,也即电子设备CPU使用率较低,且当前应用程序在触发对应进程的GC线程时发生卡顿后影响用户体验的程度较低,则触发并执行GC实现堆内存回收。
具体地,电子设备根据各应用程序在触发对应进程的GC线程时发生卡顿后对用户的影响程度预先设置各应用程序各线程的优先级,在检测到当前应用程序的进程的堆内存使用率满足触发GC的内存回收条件时,根据电子设备当前CPU使用情况以及当前应用程序的线程的优先级,决定是否触发并执行GC。如果电子设备当前CPU使用率大于或等于第一阈值,或当前应用程序的线程的优先级是预设优先级,则延迟触发GC线程。如果电子设备当前CPU使用率小于第一阈值,且当前应用程序的线程的优先级不是预设优先级,则触发并执行当前应用程序对应的GC线程。
在一些实现方式中,电子设备根据各应用程序在触发对应进程的GC线程时发生卡顿后对用户的影响程度预先设置个应用程序各线程的优先级的方法可以是,电子设备利用大数据统计的方法,统计各种应用程序的各种线程在发生卡顿时对用户的影响程度,然后根据对用户的影响程度的高低,将对用户影响程度高的应用程序的线程的优先级设置为高优先级,将对用户影响程度低的应用程序的线程的优先级设置为低优先级。
示例性地,电子设备在后台运行的系统更新或其他类似的应用程序,即使发生卡顿也不会影响用户体验,或者对用户影响程度较低,因此可以将这类应用程序的线程设置为较低优先级。而对于前台应用程序,尤其是需要快速响应用户操作的应用程序线程,比如界面切换、新建日程、界面滑动等,由于这类线程在执行时如果发生卡顿,用户可以很明显地感知到,因此这类线程发生卡顿对用户体验影响程度较大,所以可以将这类应用程序设置为较高优先级。
在一些实现方式中,内存回收触发条件包括当前应用程序的进程对应的堆内存使用率大于预设目标利用率。在一些实现方式中,第一阈值为经验值或实验值,例如可以为85%。在一些实现方式中,预设优先级也是经验值或实验值,预设优先级取决于优先级的设置方式,如果优先级为二进制编码,那么预先优先级可以是预设的二进制编码。例如,电子设备可以针对每个应用程序的各线程均设置相应的二进制编码,那么当电子设备运行的某应用程序的线程为预设二进制编码时,确定运行的该应用程序的线程的优先级满足预设优先级。例如,继续以图2a至图2c所示的购物应用的界面切换为例,假设电子设备将购物应用的界面切换、界面上下滑动等需要快速响应用户操作的线程的二进制编码分别设置为:界面切换(100),界面上下滑动(010),那么当电子设备确定当前运行的购物应用的线程的二进制编码为100或010时,即确定该线程满足预设优先级。
通过上述方法,可使电子设备的CPU处于高负载情况下,延迟触发GC,以减少GC实际运行时长,提高GC效率,或者当电子设备当前运行的应用程序的线程发生卡顿会特别影响用户操作体验的情况下,延迟触发GC,以使该线程能够被流畅地执行,避免卡顿影响用户操作体验。
图3根据本申请实施例示出了一种电子设备的系统架构示意框图。如图3所示,分层架构将该系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。如图3所示,电子设备的系统结构从上至下分别为应用程序层01、应用程序框架层02、安卓运行时(Runtime)03。
应用程序层01可以包括一系列应用程序包。在本申请的一些实现方式中,应用程序层01主要包括的程序安装在电子设备上的各应用程序011,包括但不限于聊天应用、购物应用、视频应用、电影应用等等。本申请对此不作限制。在一些实现方式中,应用程序层01还可以包括安装在电子设备上的操作系统,包括但不限于安卓操作系统。在本申请的实现方式中,电子设备在运行应用程序时,操作系统会为每个应用程序创建对应的进程。
应用程序框架层02为应用程序层01的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层02包括一些预先定义的函数。如图3所示,应用程序框架层02可以包括系统服务模块021,系统管理模块022。系统服务模块021包括状态识别模块0211,用于获取电子设备的运行状态信息以及电子设备当前运行的应用程序的各线程的信息。在一些实现方式中,状态识别模块0211可以获取电子设备的CPU使用率,以判断当前电子设备是否处于高负载工作状态。在另一些实现方式中,如上文所言,状态识别模块0211也可以获取电子设备的I/O读写情况、带宽等数据来确定电子设备是否处于高负载运行状态,本申请对此不作限制。
在一些实现方式中,状态识别模块0211可以间隔预设时长获取一次CPU使用状态信息以及当前运行的各应用程序的线程。其中,预设时长为经验值或试验值,本申请对此不作限制。在另一些实现方式中,状态识别模块0211也可以在GC满足内存回收条件的情况下,获取一次CPU使用状态信息以及当前运行的各应用程序的线程,本申请对此不作限制。
在一些实现方式中,应用程序的各线程的信息包括获取CPU使用状态信息的时间、各线程所属应用程序的标识(ID)、该线程的类型。状态识别模块0211将获取的CPU的使用率以及电子设备当前运行的应用程序的各线程的信息,发送至系统管理模块022的状态压缩模块0221。
状态压缩模块0221用于根据各应用程序的线程的信息,生成各线程对应的编码,该编码可以表示该线程的类型。其中,状态压缩模块0221生成各应用程序的线程的编码的方式包括但不限于根据各应用程序的线程的类型生成对应的二进制编码。例如,对于界面切换类的线程生成二进制编码001,对于界面滑动类的线程生成二进制编码010,对于创建activity的线程生成二进制编码100。
在一些实现方式中,状态压缩模块0221还用于将获取的CPU的使用状态以及所生成的各线程的编码发送至Android runtime 03,以便于Android runtime 03根据各线程的编码是否为预设编码以及当前CPU的使用情况,确定在满足触发GC的内存回收条件的情况下,是否延迟触发当前运行的应用程序的GC线程。
其中,Android runtime 03包括核心库和虚拟机。Android runtime 03负责安卓系统的调度和管理。核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。在一些实现方式中,应用程序层01和应用程序框架层02运行在虚拟机中。虚拟机将应用程序层01和应用程序框架层02的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理等操作,以及本申请中的垃圾回收等。在本申请的实现方式中,前述任务管理可由图3所示的任务管理模块031执行。
更具体地,任务管理模块031包括状态读取模块0312,用于接收或获取状态压缩模块0221发送的CPU的使用状态信息,以及各线程对应的编码。
在一些实现方式中,状态读取模块0312将所获取的CPU使用状态信息以及各线程的编码,按照上述状态识别模块0211获取的CPU使用状态信息以及各线程信息的时间先后,写入节点列表中,以便GC触发模块0311从状态读取模块0312中读取当前CPU使用状态信息以及各线程的编码。在一些实现方式中,GC触摸模块0311可以每间隔预设时间段从状态读取模块0312中读取一次当前CPU的使用状态以及当前运行的应用程序的各线程的编码。其中,预设时间段为经验值或试验值,本申请对此不作限制。在另一些实现方式中,也可以由状态读取模块0312向GC触发模块0311发送所获取的CPU的使用状态信息以及应用程序的线程的编码。本申请对此不作限制。
可以理解,上述电子设备1软件结构的分层架构示意图仅仅是示例性的,在其他实现方式中,电子设备1软件结构的分层架构还可以包括其他更多或更少的分层,或者按照其他方式形成的分层结构,本申请对此不作限制。
下面基于图3的电子设备的系统架构图,结合图4介绍在实现本申请方法时,电子设备系统架构中各模块之间的交互流程。其中,与图3描述相同的部分可参考图3相关文字描述,以下不再赘述。如图4所示,该过程包括:
401,应用程序011开始运行。在一些实现方式中,应用程序011可以是上文提及的任何一种应用,本申请对此不作限制。
402,任务管理模块031为应用程序011创建第一进程。如上文所言,电子设备运行应用程序时,电子设备操作系统会为该应用程序创建对应的进程。在一些实现方式中,可以由上述任务管理模块031为该应用程序创建对应的进程。
403,状态识别模块0211获取电子设备CPU的使用状态信息。在一些实现方式中,电子设备CPU使用状态信息包括电子设备CPU当前的使用率。获取电子设备CPU使用率的目的是为了判断电子设备CPU是否处于高负载工作状态,以进一步判断此时是否可以触发GC。
404,状态识别模块0211获取应用程序011各线程的运行状态信息。在一些实现方式中,应用程序011各线程的运行状态信息包括应用程序011对应的第一进程下正在执行的各线程。比如,假设应用程序011为购物应用,那么购物应用的线程包括图2a至图2b所示的,切换当前购物界面的线程。
405,状态识别模块0211发送CPU使用状态信息以及应用程序011各线程运行状态信息。
406,状态压缩模块0221基于应用程序011各线程运行状态信息,生成应用程序011各线程对应的编码。
407,状态压缩模块0221向状态读取模块0312发送CPU使用状态信息以及应用程序011各线程对应的编码。
408,状态读取模块0312按照获取CPU使用状态信息以及应用程序011各线程状态信息的时间顺序,将CPU使用状态信息以及应用程序011各线程编码写入节点列表。
409,GC触发模块0311监测应用程序011对应的第一进程的堆内存的使用率,判断其是否满足内存回收条件。判断第一进程堆内存的使用率的方式可参考上文相关描述,此处不再赘述。
410,GC触发模块0311在第一进程的堆内存使用率不满足内存回收条件的情况下,获取当前CPU使用状态信息以及当前执行的第一线程的编码。在一些实现方式中,在第一进程的堆内存使用率不满足内存回收条件的情况下,需要进一步根据当前CPU是否处于高负载状态以及当前执行的第一线程的编码是否为预设编码,决定是否延迟触发GC。
411,GC触发模块0311在第一进程的堆内存使用率满足内存回收条件的情况下,不触发GC。在一些实现方式中,当第一进程的堆内存使用率满足内存回收条件,可以理解,此时自然不必触发GC。
412,CG触发模块0311根据CPU使用状态信息确定CPU使用率是否大于或等于第一阈值,以及第一线程的编码是否为预设编码。
413,在CPU使用率大于或等于第一阈值或第一线程的编码为预设编码的情况下,延迟触发GC。在一些实现方式中,当CPU使用率大于或等于第一阈值,也即CPU处于上述的高负载工作状态时,为了避免GC线程实际运行时间过长,影响GC的效率,此时可以不触发GC。或者,在一些实现方式中,当第一线程的编码为预设编码的情况下,表明第一线程的优先级为预设优先级,也即第一线程在执行过程中如果发生卡顿会特别影响用户操作体验,因此,这种情况下,也需要延迟触发GC。
414,在CPU使用率小于第一阈值且第一线程的编码不是预设编码的情况下,触发并执行GC。在一些实现方式中,当CPU使用率小于第一阈值且第一线程的编码也不是预设编码的情况下,表明CPU并非处于高负载工作状态,而且第一线程在执行过程中即使发生卡顿,也不会特别影响用户操作体验,因此,在这种情况可以触发并执行GC,实现内存垃圾回收的目的。
图5进一步地示出了在电子设备上实现本申请内存回收方法的流程示意图。其中,类似地,与上文相同的部分可参考上文相关描述,以下不再赘述。具体地,如图5所示,该方法包括:
501,获取当前运行的第一应用程序对应的第一进程的堆内存使用率。在一些实现方式中,第一应用程序可以是上文提及的任何应用,包括但不限于聊天应用、购物应用,等等。在一些实现方式中,电子设备可以间隔预设时长获取一次第一应用程序对应的第一进程的堆内存使用率。其中,预设时长为经验值或实验值,本申请对此不作限制。第一进程的堆内存使用率的计算方式可参考上文相关描述,此处不再赘述。
502,判断第一进程的堆内存使用率是否满足内存回收条件。可以理解,第一进程的堆内存使用率是否满足内存回收条件,决定是否能够触发GC。在一些实现方式中,当第一进程的堆内存使用率满足内存回收条件的情况下,不触发GC,也即不执行内存垃圾回收。此时电子设备可以继续执行501,也即持续监测第一应用程序对应的第一进程的堆内存使用率是否满足内存回收条件。
503,在第一进程的堆内存使用率不满足内存回收条件的情况下,判断第一应用程序是否为预设类型应用程序。如上所言,一些在后台运行的应用程序,例如天气应用、地理位置更新、或者系统更新等应用程序,即使发生卡顿,也不会影响用户的操作体验,或者对用户操作体验影响程度较小,而在前台运行的应用程序,尤其是需要快速响应用户操作的应用程序,一旦发生卡顿便会影响用户体验。因此,在一些实现方式中,在第一进程的堆内存使用率不满足内存回收条件的情况下,还需要进一步判断第一应用程序是否为预设类型的应用程序,以决定是否可以触发并执行GC。在一些实现方式中,预设类型应用程序可以由研发人员预先进行设置,例如研发人员可以将前台应用程序设置为预设类型应用程序,比如研发人员将购物应用、聊天应用等应用程序设置为预设类型应用程序,本申请对此不作限制。
504,在第一应用程序不是预设类型应用程序的情况下,触发并执行GC。在一些实现方式中,如果第一应用程序不是预设类型应用程序,也即第一应用程序在运行的过程中,即使发生卡顿等情况,也不会特别影响用户操作体验,这种情况下,可以触发并执行GC。
505,在第一应用程序是预设类型应用程序的情况下,获取当前电子设备的CPU使用率,以及电子设备当前执行的第一进程中的第一线程的运行状态信息。
506,判断当前电子设备CPU使用率是否大于或等于第一阈值。此处具体可参考上文412的相关描述,在此不再赘述。
507,在当前电子设备CPU使用率是否大于或等于第一阈值的情况下,延迟触发GC。
在一些实现方式中,当电子设备CPU使用率大于或等于第一阈值的情况下,表明电子设备CPU处于高负载工作状态,此时为避免触发GC后,GC实际运行时间过长,电子设备可以延迟触发GC。
在一些实现方式中,如果当前电子设备CPU使用率小于第一阈值,则需要进一步根据第一线程是否是预设类型线程,决定是否触发并执行GC。在一些实现方式中,预设类型线程可以根据该线程发生卡顿时对用户体验影响的程度大小进行设置,例如可以将发生卡顿时对用户体验影响程序较大的线程设置为预设类型线程,本申请对此不作限制。在一些实现方式中,为便于比较,可以采用如上文所述的编码的方式,根据第一线程的运行状态信息,生成第一线程的编码。然后根据第一线程的编码是否为预设编码,确定是否触发并执行GC。具体可参考上文406的相关描述,此处不再赘述。
在一些实现方式中,当第一线程是预设类型线程的情况下,表明第一线程发生卡顿时对用户体验影响程度较大,因此电子设备延迟触发GC。
在一些实现方式中,当第一线程不是预设类型线程的情况下,表明第一线程发生卡顿时,对用户体验影响程度较小,并且又由于此时CPU使用率也小于第一阈值,表明电子设备也并非出于高负载工作状态,因此,电子设备可以触发并执行GC,以实现内存垃圾回收的目的。
可以理解,延迟触发GC的目地是为了避免执行第一线程的过程中,由于同时在执行GC,而导致第一线程的运行出现卡顿。因此,在一些实现方式中,不仅可以从触发时机上延迟触发GC,还可以同时提高第一线程对应的第一进程的GC水线值,或者提高第一线程对应的第一进程的堆内存的目标利用率。通过这种方法,同样可以达到延迟触发GC的目的。本申请对此不作限制。
可以理解,本申请不限制上述方法501至507中各方法的执行顺序。例如,在一些实现方式中,也可以先执行508,再执行506,也即先判断第一线程是否为预设类型线程,在第一线程不是预设类型线程的情况下,在确定电子设备当前的CPU使用率是否大于或等于第一阈值。本申请对此不作限制。
通过上述方法,可以根据当前运行的应用程序的线程发生卡顿时对用户的影响程度,以及当前电子设备CPU的工作状态,更合理地触发GC,以提高GC的效率和用户体验。
图6根据本申请的实施例示出了一种电子设备的硬件结构示意图。
示例性的,图6示出了电子设备100的结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备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也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池142,充电管理模块140与处理器110。电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local areanetworks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。
电子设备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可以包括1个或N个显示屏194,N为大于1的正整数。
电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
ISP 用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。耳机接口170D用于连接有线耳机。
压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。陀螺仪传感器180B可以用于确定电子设备100的运动姿态。气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。磁传感器180D包括霍尔传感器。加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。 骨传导传感器180M可以获取振动信号。按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。
以上介绍了电子设备100可能具有的硬件结构,可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。本申请实施例还提供了一种电子设备,该电子设备包括:至少一个处理器、存储器以及存储在存储器中并可在至少一个处理器上运行的计算机程序,处理器执行计算机程序时实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(read-only memory,ROM)、随机存取存储器(random accessmemory,RAM)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (7)
1.一种内存回收方法,应用于电子设备,其特征在于,包括:
运行第一应用程序;
在所述第一应用程序对应的第一进程的堆内存使用数据满足内存回收条件的情况下,获取当前电子设备运行状态数据以及所述第一进程对应的第一线程的运行状态数据,其中,所述第一线程的运行状态数据包括所述第一线程的类型,并且所述第一线程的类型包括所述第一线程的优先级,所述第一线程的优先级是预先根据在执行所述第一线程的过程中发生中断时,对用户的影响程度确定的,其中,对用户的影响程度越高所述第一线程的优先级越高;所述对用户的影响程度是基于所述第一线程响应用户操作速度的需求确定的;
对应于所述电子设备的运行状态以及所述第一线程的类型满足延迟回收触发条件,延迟触发所述第一进程的垃圾回收线程,
对应于所述电子设备的运行状态以及所述第一线程的类型不满足延迟回收触发条件,触发所述第一进程的垃圾回收线程;
所述电子设备运行状态数据包括所述电子设备的处理器的使用率,所述延迟回收触发条件包括:
所述第一线程的类型是预设类型;
其中,所述第一线程的类型包括所述第一线程对应的二进制编码,所述预设类型包括预设的二进制编码。
2.根据权利要求1所述的方法,其特征在于,所述第一进程的堆内存使用数据包括所述第一进程的堆内存使用率,所述内存回收条件包括所述第一进程的堆内存使用率大于或等于预设堆内存使用率。
3.根据权利要求1所述的方法,其特征在于,预设类型的线程包括优先级大于或等于预设优先级的线程。
4.根据权利要求1所述的方法,其特征在于,所述第一应用程序为预设类型的应用程序。
5.根据权利要求4所述的方法,其特征在于,所述预设类型的应用程序不包括运行在所述电子设备后台的应用程序。
6.一种计算机可读介质,其特征在于,所述计算机可读介质上存储有指令,该指令在计算机上执行时使计算机执行权利要求1至5中任一项所述的内存回收方法。
7.一种电子设备,其特征在于,所述电子设备包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令,以及,
一个或多个处理器,用于执行所述存储器中存储的指令,使得所述电子设备执行如权利要求1至5中任一项所述的内存回收方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211179579.3A CN115292052B (zh) | 2022-09-27 | 2022-09-27 | 内存回收方法、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211179579.3A CN115292052B (zh) | 2022-09-27 | 2022-09-27 | 内存回收方法、电子设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115292052A CN115292052A (zh) | 2022-11-04 |
CN115292052B true CN115292052B (zh) | 2023-08-08 |
Family
ID=83833629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211179579.3A Active CN115292052B (zh) | 2022-09-27 | 2022-09-27 | 内存回收方法、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115292052B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116661988A (zh) * | 2022-12-29 | 2023-08-29 | 荣耀终端有限公司 | 内存的规整方法、电子设备及可读存储介质 |
CN117130766A (zh) * | 2023-01-17 | 2023-11-28 | 荣耀终端有限公司 | 一种线程处理方法及电子设备 |
CN116049025B (zh) * | 2023-01-29 | 2023-08-11 | 荣耀终端有限公司 | 动态调整内存回收gc参数的方法、电子设备及存储介质 |
CN117130767A (zh) * | 2023-02-08 | 2023-11-28 | 荣耀终端有限公司 | 回收内存的方法、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、系统及方法 |
CN103336744A (zh) * | 2013-06-20 | 2013-10-02 | 华中科技大学 | 一种固态存储设备的垃圾回收方法及其系统 |
CN105740078A (zh) * | 2016-01-29 | 2016-07-06 | 华为技术有限公司 | 一种内存管理方法、装置及终端 |
CN107357656A (zh) * | 2017-06-27 | 2017-11-17 | 努比亚技术有限公司 | 一种内存分配方法、移动终端以及计算机可读存储介质 |
US10348814B1 (en) * | 2013-12-19 | 2019-07-09 | Amazon Technologies, Inc. | Efficient storage reclamation for system components managing storage |
CN111258921A (zh) * | 2020-01-14 | 2020-06-09 | Oppo广东移动通信有限公司 | 垃圾内存回收方法及装置、电子设备、存储介质 |
CN112286681A (zh) * | 2020-10-26 | 2021-01-29 | 苏州浪潮智能科技有限公司 | 一种内存分配管理方法、系统、设备及存储介质 |
CN112764891A (zh) * | 2019-10-21 | 2021-05-07 | 青岛海信移动通信技术股份有限公司 | 电子终端及控制应用的方法 |
CN113434288A (zh) * | 2021-06-16 | 2021-09-24 | 荣耀终端有限公司 | 内存管理的方法及电子设备 |
CN113626431A (zh) * | 2021-07-28 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种基于lsm树的延迟垃圾回收的键值分离存储方法及系统 |
WO2022143446A1 (zh) * | 2021-01-04 | 2022-07-07 | 华为技术有限公司 | 内存释放方法及相关设备 |
CN114721822A (zh) * | 2022-04-01 | 2022-07-08 | 河南省肿瘤医院 | 一种基于Android的手持移动护理终端及系统 |
-
2022
- 2022-09-27 CN CN202211179579.3A patent/CN115292052B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、系统及方法 |
CN103336744A (zh) * | 2013-06-20 | 2013-10-02 | 华中科技大学 | 一种固态存储设备的垃圾回收方法及其系统 |
US10348814B1 (en) * | 2013-12-19 | 2019-07-09 | Amazon Technologies, Inc. | Efficient storage reclamation for system components managing storage |
CN105740078A (zh) * | 2016-01-29 | 2016-07-06 | 华为技术有限公司 | 一种内存管理方法、装置及终端 |
CN107357656A (zh) * | 2017-06-27 | 2017-11-17 | 努比亚技术有限公司 | 一种内存分配方法、移动终端以及计算机可读存储介质 |
CN112764891A (zh) * | 2019-10-21 | 2021-05-07 | 青岛海信移动通信技术股份有限公司 | 电子终端及控制应用的方法 |
CN111258921A (zh) * | 2020-01-14 | 2020-06-09 | Oppo广东移动通信有限公司 | 垃圾内存回收方法及装置、电子设备、存储介质 |
CN112286681A (zh) * | 2020-10-26 | 2021-01-29 | 苏州浪潮智能科技有限公司 | 一种内存分配管理方法、系统、设备及存储介质 |
WO2022143446A1 (zh) * | 2021-01-04 | 2022-07-07 | 华为技术有限公司 | 内存释放方法及相关设备 |
CN114721812A (zh) * | 2021-01-04 | 2022-07-08 | 华为技术有限公司 | 内存释放方法及相关设备 |
CN113434288A (zh) * | 2021-06-16 | 2021-09-24 | 荣耀终端有限公司 | 内存管理的方法及电子设备 |
CN113626431A (zh) * | 2021-07-28 | 2021-11-09 | 浪潮云信息技术股份公司 | 一种基于lsm树的延迟垃圾回收的键值分离存储方法及系统 |
CN114721822A (zh) * | 2022-04-01 | 2022-07-08 | 河南省肿瘤医院 | 一种基于Android的手持移动护理终端及系统 |
Non-Patent Citations (1)
Title |
---|
一种基于SSD缓存的RAID5/6写优化技术研究;詹玲 等;《小型微型计算机系统》;第39卷(第10期);2226-2232 * |
Also Published As
Publication number | Publication date |
---|---|
CN115292052A (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115292052B (zh) | 内存回收方法、电子设备及计算机可读存储介质 | |
CN112789651B (zh) | 一种应用于终端的频率调整方法、装置及电子设备 | |
CN113254120B (zh) | 数据处理方法和相关装置 | |
CN116055786B (zh) | 一种显示多个窗口的方法及电子设备 | |
CN113778663B (zh) | 一种多核处理器的调度方法及电子设备 | |
WO2021052070A1 (zh) | 一种帧率识别方法及电子设备 | |
CN113625860B (zh) | 模式切换方法、装置、电子设备及芯片系统 | |
WO2022078105A1 (zh) | 内存管理方法、电子设备以及计算机可读存储介质 | |
CN113722058A (zh) | 一种资源调用方法及电子设备 | |
CN116680153B (zh) | 应用帧率平滑方法、电子设备及存储介质 | |
CN111104209B (zh) | 一种处理任务的方法及相关设备 | |
CN117234398A (zh) | 一种屏幕亮度调节方法及电子设备 | |
CN115119048B (zh) | 一种视频流处理方法及电子设备 | |
CN117130773A (zh) | 资源分配方法、装置和设备 | |
CN114461589B (zh) | 读取压缩文件的方法、文件系统及电子设备 | |
CN116708958A (zh) | 马达控制方法及电子设备 | |
CN114546511A (zh) | 插件管理方法、系统及装置 | |
CN114494546A (zh) | 一种数据处理方法、装置和电子设备 | |
CN115515001B (zh) | 屏幕镜像方法、装置、设备及存储介质 | |
WO2024032014A1 (zh) | 降低设备功耗方法、电子设备及其介质 | |
CN116048831B (zh) | 一种目标信号处理方法和电子设备 | |
CN116048772B (zh) | 中央处理单元频率的调整方法、装置和终端设备 | |
CN115016921B (zh) | 资源调度方法、装置及存储介质 | |
EP4239467A1 (en) | Frame rate switching method and device | |
CN111475363B (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 |