CN115016896A - 一种垃圾回收方法及终端 - Google Patents
一种垃圾回收方法及终端 Download PDFInfo
- Publication number
- CN115016896A CN115016896A CN202210718525.3A CN202210718525A CN115016896A CN 115016896 A CN115016896 A CN 115016896A CN 202210718525 A CN202210718525 A CN 202210718525A CN 115016896 A CN115016896 A CN 115016896A
- Authority
- CN
- China
- Prior art keywords
- garbage collection
- program
- original
- garbage
- application
- 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
Links
Images
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种垃圾回收方法及终端,通过在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,以通过第一垃圾回收程序来停止查询垃圾回收条件以及停止进行垃圾回收;并在应用启动操作执行结束后,恢复原始垃圾回收程序。以此方式,能够通过程序覆盖的方式实现垃圾回收机制的重写,从而在应用启动的过程中停止进行垃圾回收,直至应用启动完毕后才重新启用原始垃圾回收程序,因此使用更多的内存消耗来减少应用启动耗时,进而提高用户的体验感。
Description
技术领域
本发明涉及计算机存储技术领域,特别涉及一种垃圾回收方法及终端。
背景技术
现在的客户端应用多种多样,同样编写这些应用的语言也有很多种。比较常见的有IOS系统的object-c,以及android系统的java。因为java的跨平台性以及开放性,所有使用java的项目都需要安装其虚拟机。而其虚拟机中就存在有java的GC(垃圾回收)功能,即当程序使用的堆内存不足时,虚拟机将会启动GC,进行无用内存的回收,可以提供新的空闲内存给应用使用。
在实际的场景中,由于客户端应用本来的可用堆内存就不是很多,当应用启动时,如果加载的内容较多,则虚拟机就会占用大量内存,而当内存不足或者达到GC的条件时,就会进行内存回收,当进行内存回收时,所有的工作都暂停,等待内存回收完成后再进行其他工作。这样,因为客户端应用启动过程中的GC操作,最后导致了应用启动耗时较多,用户体验不好。
发明内容
本发明所要解决的技术问题是:提供一种垃圾回收方法及终端,能够减少应用启动耗时,提高用户体验。
为了解决上述技术问题,本发明采用的技术方案为:
一种垃圾回收方法,包括步骤:
在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收;
在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种垃圾回收终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收;
在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序。
本发明的有益效果在于:通过在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,以通过第一垃圾回收程序来停止查询垃圾回收条件以及停止进行垃圾回收;并在应用启动操作执行结束后,恢复原始垃圾回收程序。以此方式,能够通过程序覆盖的方式实现垃圾回收机制的重写,从而在应用启动的过程中停止进行垃圾回收,直至应用启动完毕后才重新启用原始垃圾回收程序,因此使用更多的内存消耗来减少应用启动耗时,进而提高用户的体验感。
附图说明
图1为本发明实施例的一种垃圾回收方法的流程图;
图2为本发明实施例的一种垃圾回收终端的示意图;
标号说明:
1、一种垃圾回收终端;2、存储器;3、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
请参照图1,本发明实施例提供了一种垃圾回收方法,包括步骤:
在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收;
在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序。
从上述描述可知,本发明的有益效果在于:通过在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,以通过第一垃圾回收程序来停止查询垃圾回收条件以及停止进行垃圾回收;并在应用启动操作执行结束后,恢复原始垃圾回收程序。以此方式,能够通过程序覆盖的方式实现垃圾回收机制的重写,从而在应用启动的过程中停止进行垃圾回收,直至应用启动完毕后才重新启用原始垃圾回收程序,因此使用更多的内存消耗来减少应用启动耗时,进而提高用户的体验感。
进一步地,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收包括:
定时检查内存容量,判断所述内存容量是否超过预设容量,若是,则停止对垃圾回收条件的查询,并停止进行垃圾回收条件的查询和垃圾回收。
由上述描述可知,定时对内存数据进行检查,当检查到的内存容量满足垃圾回收条件的预设容量时,将会停止进行垃圾回收和垃圾回收条件的查询,从而通过覆盖原有垃圾回收机制的方法来保证在应用的启动过程中不进行垃圾回收。
进一步地,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收之后包括:
判断内存容量是否超出容量上限,若是,则重启应用,并调整第一垃圾回收程序的参数和应用的内存使用参数。
由上述描述可知,应用启动过程中,因停止垃圾回收而导致内存容量超出容量上限后,需要重启应用,并调整停止垃圾回收的参数或者调整内存的使用情况与参数,便于后续成功进行应用启动。
进一步地,在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序包括:
在所述应用启动操作执行结束后,将所述第一垃圾回收程序替换为所述原始垃圾回收程序,并重新启动所述原始垃圾回收程序。
由上述描述可知,在应用启动完毕后,重启垃圾回收,将垃圾回收程序恢复为原始垃圾回收程序,以便应用操作过程中垃圾回收的正常运行。
进一步地,所述使用第一垃圾回收程序替代原始垃圾回收程序还包括:
当所述使用第一垃圾回收程序替代原始垃圾回收程序失败时,恢复所述原始垃圾回收程序。
由上述描述可知,对于第一垃圾回收程序覆盖异常的情况,恢复原始垃圾回收程序,能够保证应用的正常启用。
请参照图2,本发明另一实施例提供了一种垃圾回收终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收;
在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序。
从上述描述可知,本发明的有益效果在于:通过在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,以通过第一垃圾回收程序来停止查询垃圾回收条件以及停止进行垃圾回收;并在应用启动操作执行结束后,恢复原始垃圾回收程序。以此方式,能够通过程序覆盖的方式实现垃圾回收机制的重写,从而在应用启动的过程中停止进行垃圾回收,直至应用启动完毕后才重新启用原始垃圾回收程序,因此使用更多的内存消耗来减少应用启动耗时,进而提高用户的体验感。
进一步地,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收包括:
定时检查内存容量,判断所述内存容量是否超过预设容量,若是,则停止对垃圾回收条件的查询,并停止进行垃圾回收条件的查询和垃圾回收。
由上述描述可知,定时对内存数据进行检查,当检查到的内存容量满足垃圾回收条件的预设容量时,将会停止进行垃圾回收和垃圾回收条件的查询,从而通过覆盖原有垃圾回收机制的方法来保证在应用的启动过程中不进行垃圾回收。
进一步地,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收之后包括:
判断内存容量是否超出容量上限,若是,则重启应用,并调整第一垃圾回收程序的参数和应用的内存使用参数。
由上述描述可知,应用启动过程中,因停止垃圾回收而导致内存容量超出容量上限后,需要重启应用,并调整停止垃圾回收的参数或者调整内存的使用情况与参数,便于后续成功进行应用启动。
进一步地,在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序包括:
在所述应用启动操作执行结束后,将所述第一垃圾回收程序替换为所述原始垃圾回收程序,并重新启动所述原始垃圾回收程序。
由上述描述可知,在应用启动完毕后,重启垃圾回收,将垃圾回收程序恢复为原始垃圾回收程序,以便应用操作过程中垃圾回收的正常运行。
进一步地,所述使用第一垃圾回收程序替代原始垃圾回收程序还包括:
当所述使用第一垃圾回收程序替代原始垃圾回收程序失败时,恢复所述原始垃圾回收程序。
由上述描述可知,对于第一垃圾回收程序覆盖异常的情况,恢复原始垃圾回收程序,能够保证应用的正常启用。
本发明上述的一种垃圾回收方法及终端,适用于减少虚拟机中应用启动的耗时,以提高用户体验,以下通过具体的实施方式进行说明:
实施例一
请参照图1,一种垃圾回收方法,包括步骤:
S1、在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收。
S11、当应用启动时使用第一垃圾回收程序替代原始垃圾回收程序。
具体的,在本实施例中,虚拟机内存为1G,原始垃圾回收程序为超过50%内存时,会进行垃圾回收(GC)操作;
对开源虚拟机的源码进行重写,得到第一垃圾回收程序,第一垃圾回收程序中至少提供两个公共方法:停止GC操作以及恢复GC操作方法。这两种方法主要通过C++以及arm编程语言实现底层逻辑,并通过JNI接口的方式提供给各种JAVA语言实现的客户端应用调用。
当所述使用第一垃圾回收程序替代原始垃圾回收程序失败时,恢复所述原始垃圾回收程序,以确保应用的正常启动。
S12、定时检查内存容量,判断所述内存容量是否超过预设容量,若是,则停止对垃圾回收条件的查询,并停止进行垃圾回收条件的查询和垃圾回收。
具体的,虚拟机内部会存在例如定时任务的独立方法进行内存数据的检查,当检查到内存数据满足GC条件时,将会触发停止GC方法。
此时,虚拟机内部不再对应用进行内存数据的查询并且虚拟机对应用提供停止GC的方法;
当停止GC操作方法被调用时,直接修改虚拟机内存中二进制的代码逻辑,由停止GC操作以及恢复GC操作方法来覆盖原始的垃圾回收方法,进而实现GC操作的停止。
S13、判断内存容量是否超出容量上限,若是,则重启应用,并调整第一垃圾回收程序的参数和应用的内存使用参数。
具体的,在本实施例中,当停止GC后导致的内存超过虚拟机整体内存上限时,先进行应用重启;后续需要进行调整:调整停止GC方法的参数开关,或者调整业务内存使用情况或参数等,其中参数开关可用于开始或者停止GC方法,其参数可自定义。
S2、在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序。
其中,步骤S2包括:
在所述应用启动操作执行结束后,将所述第一垃圾回收程序替换为所述原始垃圾回收程序,并重新启动所述原始垃圾回收程序。
具体的,在本实施例中,恢复GC的操作方法实现主要步骤是通过还原的方式,具体为关闭停止GC的参数开关,由目前已经使用的子方法还原成原始的垃圾回收方法,使用原始的垃圾回收参数,进而恢复GC操作,保证应用的正常启动。
因此,本实施例特指针对应用重启场景,如果停止垃圾回收后重启成功,则能够减少应用重启时间,用户正常使用。如果因为内存溢出导致重启失败,则再次重启时,将会默认使用旧有方式进行重启保证重启成功。因此,用户至少启动两次即可保证一定重启成功,能够减少重启时间。
实施例二
请参照图2,一种垃圾回收终端1,包括存储器2、处理器3以及存储在所述存储器2上并可在处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例一的一种垃圾回收方法的各个步骤。
综上所述,本发明提供的一种垃圾回收方法及终端,通过在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,以通过第一垃圾回收程序来停止查询垃圾回收条件以及停止进行垃圾回收;并在应用启动操作执行结束后,恢复原始垃圾回收程序。以此方式,能够通过程序覆盖的方式实现垃圾回收机制的重写,从而在应用启动的过程中停止进行垃圾回收,直至应用启动完毕后才重新启用原始垃圾回收程序,因此使用更多的内存消耗来减少应用启动耗时,进而提高用户的体验感。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种垃圾回收方法,其特征在于,包括步骤:
在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收;
在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序。
2.根据权利要求1所述的一种垃圾回收方法,其特征在于,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收包括:
定时检查内存容量,判断所述内存容量是否超过预设容量,若是,则停止对垃圾回收条件的查询,并停止进行垃圾回收条件的查询和垃圾回收。
3.根据权利要求2所述的一种垃圾回收方法,其特征在于,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收之后包括:
判断内存容量是否超出容量上限,若是,则重启应用,并调整第一垃圾回收程序的参数和应用的内存使用参数。
4.根据权利要求1所述的一种垃圾回收方法,其特征在于,在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序包括:
在所述应用启动操作执行结束后,将所述第一垃圾回收程序替换为所述原始垃圾回收程序,并重新启动所述原始垃圾回收程序。
5.根据权利要求1所述的一种垃圾回收方法,其特征在于,所述使用第一垃圾回收程序替代原始垃圾回收程序还包括:
当所述使用第一垃圾回收程序替代原始垃圾回收程序失败时,恢复所述原始垃圾回收程序。
6.一种垃圾回收终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
在执行应用启动操作时,使用第一垃圾回收程序替代原始垃圾回收程序,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收;
在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序。
7.根据权利要求6所述的一种垃圾回收终端,其特征在于,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收包括:
定时检查内存容量,判断所述内存容量是否超过预设容量,若是,则停止对垃圾回收条件的查询,并停止进行垃圾回收条件的查询和垃圾回收。
8.根据权利要求7所述的一种垃圾回收终端,其特征在于,通过所述第一垃圾回收程序停止查询垃圾回收条件以及停止垃圾回收之后包括:
判断内存容量是否超出容量上限,若是,则重启应用,并调整第一垃圾回收程序的参数和应用的内存使用参数。
9.根据权利要求6所述的一种垃圾回收终端,其特征在于,在所述应用启动操作执行结束后,恢复所述原始垃圾回收程序包括:
在所述应用启动操作执行结束后,将所述第一垃圾回收程序替换为所述原始垃圾回收程序,并重新启动所述原始垃圾回收程序。
10.根据权利要求6所述的一种垃圾回收终端,其特征在于,所述使用第一垃圾回收程序替代原始垃圾回收程序还包括:
当所述使用第一垃圾回收程序替代原始垃圾回收程序失败时,恢复所述原始垃圾回收程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210718525.3A CN115016896A (zh) | 2022-06-23 | 2022-06-23 | 一种垃圾回收方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210718525.3A CN115016896A (zh) | 2022-06-23 | 2022-06-23 | 一种垃圾回收方法及终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115016896A true CN115016896A (zh) | 2022-09-06 |
Family
ID=83076667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210718525.3A Pending CN115016896A (zh) | 2022-06-23 | 2022-06-23 | 一种垃圾回收方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115016896A (zh) |
-
2022
- 2022-06-23 CN CN202210718525.3A patent/CN115016896A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6769004B2 (en) | Method and system for incremental stack scanning | |
US11232026B2 (en) | Deferred destruction for efficient resource reclamation | |
CN105138382B (zh) | 一种Android系统升级的方法及终端 | |
US6223336B1 (en) | Multitasking computer system having a boot process rewrite program | |
CN104503788A (zh) | 一种缩短安卓操作系统启动时间的设置方法 | |
CN105528231A (zh) | 一种基于中间辅助函数的软件动态升级方法及系统 | |
CN102346673A (zh) | 一种手机系统升级的方法及装置 | |
CN106648768B (zh) | 一种升级设备的方法及系统 | |
CN106909480B (zh) | 一种嵌入式系统交叉调试方法和装置 | |
CN109710297B (zh) | 一种设备整体或分模块进行升级和回退方法 | |
CN103873516A (zh) | 提高云计算资源池中物理服务器使用率的ha方法和系统 | |
CN115016896A (zh) | 一种垃圾回收方法及终端 | |
CN109189573B (zh) | 一种基于nvdimm的异构内存管理系统 | |
CN112069435A (zh) | 一种通过脚本进行nginx配置文件切换的方法及系统 | |
JPH117382A (ja) | ファームウェアのバージョンアップ方法 | |
CN110865873A (zh) | 一种虚拟机资源动态停机及恢复方法 | |
KR100247467B1 (ko) | 엠엠씨 커맨드를 이용한 교체 블록 로딩 방법 | |
CN106569912A (zh) | 一种移动终端恢复出厂设置的方法及系统 | |
CN112748933A (zh) | 用于可编程逻辑控制器的在线下装方法 | |
CN116560700B (zh) | 芯片固件升级系统 | |
CN112764880B (zh) | 一种Java垃圾回收监控方法及终端 | |
CN114237721A (zh) | 一种主板双开机的软体保护方法、系统、装置及存储介质 | |
CN105159803A (zh) | 一种应用程序的恢复方法及系统 | |
JP2009123082A (ja) | 情報処理装置、システム再開方法及びシステム再開プログラム | |
CN114296760A (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 |