CN109117242A - 虚拟机垃圾回收调优方法、装置、电子设备及存储介质 - Google Patents
虚拟机垃圾回收调优方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109117242A CN109117242A CN201710483539.0A CN201710483539A CN109117242A CN 109117242 A CN109117242 A CN 109117242A CN 201710483539 A CN201710483539 A CN 201710483539A CN 109117242 A CN109117242 A CN 109117242A
- Authority
- CN
- China
- Prior art keywords
- tuning
- program
- mentioned
- parameter
- heap space
- 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
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/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例涉及通信技术领域,具体地涉及一种虚拟机垃圾回收调优方法、装置、电子设备及存储介质。该方法包括:根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配该预设性能指标的调优方案;该调优方案包括采用的垃圾收集器以及该虚拟机的堆空间的设置参数;采用该垃圾收集器,以该堆空间的设置参数作为针对该目标程序的调优程序的堆空间的调优参数的起始值,以该预设性能指标作为该调优程序的调优目标,执行针对该目标程序的调优程序。本发明实施例以该匹配的调优方案中采用的垃圾收集器和堆空间的设置参数,作为该目标程序的调优程序的起始值,从而得到较优的具有针对性的调优参数的起始值,缩短调优时间。
Description
技术领域
本发明涉及通信技术领域,具体地涉及一种虚拟机垃圾回收调优方法、一种虚拟机垃圾回收调优装置、一种电子设备以及一种存储介质。
背景技术
垃圾回收(Garbage Collection,GC)是Java程序设计中内存管理的核心概念,Java虚拟机(Java Virtual Machine,简称JVM)的内存管理机制被称为垃圾回收(Generation Collection)机制,用以跟踪正在使用的对象,以及发现并回收不再使用的对象。
JVM管理的内存叫堆,当前主流的“分代收集”算法根据对象存活周期的不同将堆划分为几块,一般是把Java堆分为新生代和老年代以及永久代,根据各个年代的特点选用不同的收集算法或垃圾收集器;JVM生成的所有新对象放在新生代中,一旦对象经历了一定数量的垃圾收集循环,即存活周期后,便并进入老年代;永久代中用于存放静态文件,如Java类、方法等,对垃圾回收没有显著影响。
而当新生代、老年代、永久代不满足内存分配需求或者其他原因时,都可能导致垃圾收集,甚至是内存溢出的错误。而每次垃圾收集时,JVM需要执行垃圾回收线程,即GC线程,而停止应用程序的执行。所以Java堆设置的不合理就会频繁引起垃圾收集,以及内存溢出错误,严重影响程序性能。因此,Java的垃圾回收机制对应用程序的性能有着非常重要的影响,为避免应用程序性能瓶颈的出现,对JVM的垃圾回收策略及相关参数进行调优是十分必要的。
在Java虚拟机中,吞吐量、延迟响应、内存占用是影响垃圾收集性能的三个主要属性,其中任何一个属性性能的提高几乎总是另一个或两个属性性能的损失作代价的。因此,在实际调优程序中,针对不同应用的垃圾收集性能评价指标也不同,进而使用的垃圾回收策略和相关参数也有较大差异。
现有JVM垃圾回收策略存在两种技术方案,技术方案一:通过人工监测GC状态,分析监测结果,并结合调试经验值进行手动调试;技术方案二:通过外层软件穷举合理范围内的值来实现自动化的试探调优。
但是在实际应用中,依靠手工进行调试,需要不断重复试验,因此效率低下;穷举的方法涉及的参数较多,因此效率低下;而且对不同的应用程序,上述两种技术方案也不具有系统性的针对方案,因此调优效果不理想。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种虚拟机垃圾回收调优方法,以解决现有调优方法不具备针对性,且效率低下的问题。
相应的,本发明实施例还提供了一种虚拟机垃圾回收调优装置、一种电子设备以及一种存储介质,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种虚拟机垃圾回收调优方法,具体可以包括:
根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配所述预设性能指标的调优方案;所述调优方案包括采用的垃圾收集器以及所述虚拟机的堆空间的设置参数;
采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数的起始值,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序。
可选地,所述采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数的起始值,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序的步骤,包括:
采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的第一调优程序的堆空间的调优参数,执行针对所述目标程序的第一调优程序;
在所述第一调优程序结束后,获取所述第一调优程序中所述目标程序的性能指标;
若所述目标程序的性能指标匹配所述预设性能指标,则输出所述第一调优程序中采用的垃圾收集器和所述第一调优程序的堆空间的调优参数,作为所述目标程序的调优方案。
进一步地,所述采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序的步骤,还包括:
若所述目标程序的性能指标匹配所述预设性能指标失败,则分析所述第一调优程序,按照预设调优策略,调整所述第一调优程序的堆空间的调优参数,作为针对所述目标程序的第二调优程序的堆空间的调优参数;
采用所述垃圾收集器,以及所述第二调优程序的堆空间的调优参数,执行针对所述目标程序的第二调优程序。
进一步地,所述在所述第一调优程序结束后,获取所述第一调优程序中所述目标程序的性能指标的步骤之后,还包括:
记录所述第一调优程序中所述目标程序的性能指标,和所述第一调优程序中采用的垃圾收集器、所述第一调优程序的堆空间的调优参数,之间的第一映射关系;
根据上述第一映射关系,更新所述预设的垃圾回收调优方案库。
可选地,所述预设性能指标包括内存占用指标,和/或延迟响应指标,和/或吞吐量指标。
本发明实施例还公开了一种虚拟机垃圾回收调优装置,具体可以包括:
调优方案匹配模块,用于根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配所述预设性能指标的调优方案;所述调优方案包括采用的垃圾收集器以及所述虚拟机的堆空间的设置参数;
调优程序控制模块,用于采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数的起始值,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序。
可选地,所述调优程序控制模块包括:
第一调优控制模块,用于采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的第一调优程序的堆空间的调优参数,执行针对所述目标程序的第一调优程序;
第一性能监控模块,用于在所述第一调优程序结束后,获取所述第一调优程序中所述目标程序的性能指标;
调优方案输出模块,用于若所述目标程序的性能指标匹配所述预设性能指标,则输出所述第一调优程序中采用的垃圾收集器和所述第一调优程序的堆空间的调优参数,作为所述目标程序的调优方案。
进一步地,所述调优程序控制模块还包括:
调优参数控制模块,用于若所述目标程序的性能指标匹配所述预设性能指标失败,则分析所述第一调优程序,按照预设调优策略,调整所述第一调优程序的堆空间的调优参数,作为针对所述目标程序的第二调优程序的堆空间的调优参数;
第二调优控制模块,用于采用所述垃圾收集器,以及所述第二调优程序的堆空间的调优参数,执行针对所述目标程序的第二调优程序。
进一步地,所述装置还包括:
调优方案库记录模块,用于记录所述第一调优程序中所述目标程序的性能指标,和所述第一调优程序中采用的垃圾收集器、所述第一调优程序的堆空间的调优参数,之间的第一映射关系;
调优方案库更新模块,用于根据上述第一映射关系,更新所述预设的垃圾回收调优方案库。
可选地,所述预设性能指标包括内存占用指标,和/或延迟响应指标,和/或吞吐量指标。
本发明实施例还公开了一种电子设备包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配所述预设性能指标的调优方案;所述调优方案包括采用的垃圾收集器以及所述虚拟机的堆空间的设置参数;
采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数的起始值,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序。
本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本发明实施例中一个或多个所述的虚拟机垃圾回收调优方法。
本发明实施例包括以下优点:
通过目标程序调优的预设性能指标,在预设的垃圾回收方案中查找到匹配上述预设性能指标的调优方案,以上述匹配的调优方案中采用的垃圾收集器和堆空间的设置参数,作为上述目标程序的调优程序的起始值,从而得到较优的具有针对性的调优参数的起始值,缩短调优时间。
附图说明
图1是本发明实施例的核心构思之一的示意图;
图2是本发明实施例的一种虚拟机垃圾回收调优方法实施例的步骤流程图;
图3是本发明实施例的另一种虚拟机垃圾回收调优方法实施例的步骤流程图;
图4是本发明实施例的一种虚拟机垃圾回收调优装置实施例的结构框图;
图5是本发明实施例的另一种虚拟机垃圾回收调优装置实施例的结构框图;
图6是根据一示例性实施例示出的一种用于虚拟机垃圾回收调优的电子设备的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1所示,本发明实施例的核心构思之一在于,通过目标程序的调优的预设性能指标,在预设的垃圾回收方案中查找到匹配上述预设性能指标的调优方案,以上述匹配的调优方案中采用的垃圾收集器和堆空间的设置参数,作为上述目标程序的调优程序的起始值,从而得到较优的具有针对性的调优参数的起始值,缩短调优时间。同时,可以将调优过程对应的调优方案以及对应的调优后目标程序的性能指标进行存储,作为后续调优的调优方案匹配的来源。
上述预设性能指标可以包括内存占用指标,和/或延迟响应指标,和/或吞吐量指标;当然,进一步地,上述各预设性能指标可以包括具体地性能指标,例如上述延迟响应指标包括:Full GC(全局垃圾回收)的第一频率阈值,和/或Full GC的第一持续时间阈值,和/或Minor GC(次要垃圾回收)的第二频率阈值,和/或Minor GC的第二持续时间阈值等。可以理解的是,本发明实施例中,可以在进行内存占用调优之后,进行延迟响应调优,或者吞吐量调优;或者在进行吞吐量调优之后,进行延迟响应调优;或者其它需求;总之本发明实施例对此不作限制,具体情况下,需要根据目标程序的特点和实际需求确定目标程序的预设性能指标。
具体实现过程中,例如Hotspot VM,一种Java语言软件开发工具包默认的虚拟机,该虚拟机的堆空间包括:用于存储活跃周期小于预设周期的对象的新生代存储区,用于存储活跃周期大于等于预设周期的对象的老年代存储区,以及用于存储静态文件的永久代存储区;上述新生代存储区包括Eden(伊甸园)存储区、第一Survivor(幸存者)存储区和第二Survivor存储区。
当Eden存储区被写满时,应用程序停止,执行Minor GC(次要垃圾回收机制),把所有存活对象(正在使用的对象)复制到当前的第一Survivor存储区,并清理Eden存储区;一旦当前的第一Survivor存储区被写满,则把此时存活的对象复制到当前的第二Survivor存储区,并清理当前的第一Survivor存储区;然后第一Survivor存储区和第二Survivor存储区互换角色。活跃对象将在Survivor存储区不断复制,直到它们的生存周期大于设定阈值则并转入老年代存储区。
而当老年代存储区被写满,或者永久代存储区被写满,或者通过Minor GC后进入老年代存储区的对象平均大小大于老年代存储区的可用空间时,则应用程序停止,执行Full GC(全局垃圾回收机制),清理整个堆空间中的死亡对象,即不再使用的对象。
参照图2,示出了本发明的一种虚拟机垃圾回收调优方法实施例的步骤流程图,具体可以包括步骤201-202:
步骤201:根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配上述预设性能指标的调优方案;上述调优方案包括采用的垃圾收集器以及上述虚拟机的堆空间的设置参数。
本发明实施例中,上述预设性能指标可以包括内存占用指标,和/或延迟响应指标,和/或吞吐量指标。例如预设性能指标为延迟响应指标,则在预设的垃圾回收调优方案中查找各调优方案,同样是以延迟响应为目标的调优方案即为匹配上述延迟响应指标的调优方案。
上述调优方案库中,可以包括各调优方案与各性能指标的对应关系,上述各性能指标可以为各调优方案对应的程序的调优方向,即内存占用指标,和/或延迟响应指标,和/或吞吐量指标;或者各调优方案对应的程序的按照上述调优方向调优后的具体的性能指标,即对应的阈值,例如针对调优方向为延迟响应的Full GC的持续时间阈值。
上述调优方案包括调优过程采用的垃圾收集器以及上述虚拟机的堆空间的设置参数。上述垃圾收集器是针对垃圾收集算法而言的,不同垃圾收集器对应不同的垃圾收集算法,例如CMS(Concurrent Mark Sweep,并发标记清除)收集器是基于“标记-清除”算法实现的。上述堆空间的设置参数包括对上述堆空间中各个存储区的内存划分,例如对新生代存储区、老年代存储区、永久代存储区的划分,包括最大值和初始值;上述最大值为上述存储区的最大内存空间,上述初始值为上述存储区的内存分配值,即上述存储区在目标程序运行前的可用内存。
本发明实施例中,当上述预设性能指标为多个时,可以根据目标程序的各预设性能指标以及各预设性能指标优先级的不同,在预设的垃圾回收调优方案库中查找到匹配上述各预设性能指标以及各预设性能指标优先级的调优方案。例如,内存占用指标为第一优先级,延迟响应指标为第二优先级,则在预设的垃圾回收调优方案中查找各调优方案,同样是内存占用指标为第一优先级,延迟响应指标为第二优先级的调优方案即为匹配上述预设性能指标的调优方案。
进一步地,上述延迟响应指标包括:全局垃圾回收Full GC的第一频率阈值,和/或Full GC的第一持续时间阈值,和/或次要垃圾回收Minor GC的第二频率阈值,和/或MinorGC的第二持续时间阈值;上述吞吐量指标包括:上述目标程序的线程用时占调优程序用时的第一比例阈值;上述内存占用指标包括:上述堆空间的预设占用比例阈值,和/或Full GC的第二频率阈值,和/或上述目标程序的线程用时占调优程序用时的第二比例阈值。
可以理解的是,因为内存调优是整个调优过程的基础,因此针对内存调优的预设性能指标,即内存性能指标在一般情况下还可以包括衡量吞吐量或延迟响应性能的指标,需要综合考虑目标程序的性能。
本发明实施例中,当上述预设性能指标不仅包括调优目标,还包括具体调优目标的阈值时,可以根据目标程序的预设性能指标以及预设性能指标对应的阈值,在预设的垃圾回收调优方案库中查找到匹配上述预设性能指标以及对应阈值的调优方案。
例如,预设性能指标为吞吐量指标,以及吞吐量指标包括上述目标程序的线程用时占调优程序用时的第一比例阈值80%,则在预设的垃圾回收调优方案库中查找,调优目标为吞吐量,且调优后的吞吐量大于等于80%的调优方案,即为匹配上述预设性能指标的调优方案。
步骤202:采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的调优程序的堆空间的调优参数的起始值,以上述预设性能指标作为上述调优程序的调优目标,执行针对上述目标程序的调优程序。
本发明实施例中,采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的调优程序的堆空间的调优参数的起始值,以上述预设性能指标作为上述调优程序的调优目标,执行针对上述目标程序的调优程序。
调优过程中,可以通过GC日志,或者各种JVM监控工具,例如,Java语言软件开发工具包自带工具“jstat”,JVM垃圾收集的可视化工具“Visual GC”等,监控或者获取调优过程中上述目标程序的性能指标。可以理解的是,调优过程一般是需要多次进行的,每一次调优过程后,可以获取每一次调优过程中上述目标程序的性能指标,并进行分析,按照预设调优策略,对每一次调优过程的堆空间的设置参数进行调整,作为下一次调优过程的堆空间的设置参数;经过多次的调优过程,不断逼近目标程序的预设性能指标,同样地,堆空间的设置参数也不断逼近最优的设置参数。
因此,通过将匹配上述目标程序的预设性能指标的调优方案的堆空间的设置参数作为调优程序的堆空间的设置参数的起始值,即第一次调优过程的堆空间的设置参数,可以从较优的具有针对性的调优参数开始,去逼近最优的调优参数,因此可以缩短调优时间。
本发明实施例包括以下优点:
通过目标程序调优的预设性能指标,在预设的垃圾回收方案中查找到匹配上述预设性能指标的调优方案,以上述匹配的调优方案中采用的垃圾收集器和堆空间的设置参数,作为上述目标程序的调优程序的起始值,从而得到较优的具有针对性的调优参数的起始值,缩短调优时间。
参照图3,示出了本发明的另一种虚拟机垃圾回收调优方法实施例的步骤流程图,具体可以包括步骤301-306:
步骤301:根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配上述预设性能指标的调优方案;上述调优方案包括采用的垃圾收集器以及上述虚拟机的堆空间的设置参数。
本发明实施例中,可选地,在上述根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配上述预设性能指标的调优方案的步骤之前,包括:采用上述虚拟机的默认的垃圾收集器,以及上述虚拟机的默认的堆空间的调优参数,执行上述目标程序;获取上述目标程序在执行过程中的默认性能指标;根据上述默认性能指标,确定上述虚拟机的预设性能指标。
具体实施中,可以先以虚拟机的默认设置启动待调优的目标程序,然后通过输出GC日志等方式获得上述目标程序试运行期间的性能指标,然后在分析上述性能指标的基础上设置目标程序的预设性能指标;或者上述调优方案库中对应的调优方向的具体的性能指标,即对应的阈值,优于上述具体地性能指标的调优方案,即为匹配上述预设性能指标的调优方案。
可以理解的是,上述预设的垃圾回收调优方案库,可以是对记录或储存的历史调优方案进行整合后得到的,即整合各个历史调优方案对应的程序的性能指标,和采用的垃圾收集器、堆空间的调优参数,之间的映射关系。
为了快速有效地在预设的垃圾回收调优方案库中查找到匹配上述预设性能指标的调优方案,可以采用机器学习的理念,可以使用决策树算法来进行匹配。决策树是一个预测模型,代表的是对象属性与对象值之间的一种映射关系;树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,而每个叶节点则对应从根节点到该叶节点所经历的路径所表示的对象的值。在实现中,可以把各调优方案对应的程序的性能指标,进一步地包括具体的性能指标,作为决策树的内部节点;而对应的调优方案作为决策树的叶节点。
步骤302:采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的第一调优程序的堆空间的调优参数,执行针对上述目标程序的第一调优程序。
本发明实施例中,采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的第一调优程序的堆空间的调优参数,执行针对上述目标程序的第一调优程序。可以理解的是,上述调优程序的堆空间的调优参数的起始值,即为上述第一调优程序的堆空间的调优参数。
上述虚拟机的堆空间的设置参数可以包括:上述新生代存储区的初始值和最大值,和/或上述老年代存储区的初始值和最大值,和/或上述永久代存储区的初始值和最大值,和/或上述堆空间的初始值和最大值。进一步地,还可以包括上述新生代存储区中Eden存储区与两个Survivor存储区的大小的比值。
参照表1所示的Java虚拟机堆空间设置命令行选项,可以以上述堆空间的设置参数作为针对上述目标程序的第一调优程序的堆空间的调优参数。
表1 Java虚拟机堆空间设置命令行选项
在调优过程中,可以通过使用模拟退火算法或其他类似算法来寻找最优的调优方案。
下面给出一个堆空间设置参数的示例,
设置JVM堆的最大值为1675M,初始值为1675M;设置新生代存储区大小的最大值为600M,初始值为400M;设置永久代存储区大小的最大值为15M,初始值为12M;则老年代存储区大小的最大值为为1060M,可以设置老年代存储区大小的初始值为800M。
步骤303:在上述第一调优程序结束后,获取上述第一调优程序中上述目标程序的性能指标。
若上述目标程序的性能指标匹配上述预设性能指标,则执行步骤304;若上述目标程序的性能指标匹配上述预设性能指标失败,则执行步骤305。
本发明实施例中,可以通过各种GC监控工具,或者输出GC日志来获取上述第一调优程序中上述目标程序的性能指标。
以Hotspot VM为例,可使用命令行-XX:+PrintGCTimeStamp打印从虚拟机启动到GC开始经历的时间;使用-XX:+PrintGCDetails打印垃圾收集器相关的统计数据,用-Xloggc:<filename>将GC的日志信息记录到名为<filename>的文件中,用-XX:PrintCommandLineFlags输出堆的初始值及最大值等。
示例性地,下面是一次Minor GC的日志,Full GC的日志和这个类似:
5.453:[GC(Allocation Failure);
[PSYoungGen:142620K->16873K(145408K)];
168204K->48298K(189440K),0.0769590secs];
[Times:user=0.2,sys=0.00,real=0.1secs];
其中,“5.453:”是JVM启动调优程序后到此次GC的时间戳信息,即JVM启动调优程序5.453秒后触发此次GC;
“Allocation Failure”标识因为Eden存储区分配内存失败,导致GC;由此处获知此次GC为Minor GC;
“142620K”为新生代存储区在GC前占用大小,“16873K”为新生代存储区在GC后占用大小,“145408K”为新生代存储区总大小,即此次调优过程中新生代存储区的初始值;
“168204K”为整个堆在GC前占用大小,“48298K”为整个堆在GC后占用大小,“189440K”为整个堆总大小,即此次调优过程中堆的初始值;
“Times:user”为此次GC占用的各个CPU总时间,“sys”为操作系统调用以及等待系统事件占用的CPU时间,“real”为此次GC实际占用的CPU时间。
例如,可以根据上面这个Minor GC日志,可以推算出老年代存储区在GC前后的大小,GC前:168204K(GC前堆占用大小)-142620K(新生代存储区GC前大小)=25584K;GC后:48298K(GC后堆占用大小)-16873K(新生代存储区GC后大小)=31425K。
例如,可以根据上述Minor GC日志,计算对应上述目标程序的吞吐量的性能指标,即上述目标程序的线程用时占调优程序用时,即5.453/(5.453+0.1)=98%。
可以理解的是,在实际调优程序运行过程中,可能经过多次GC,则需要统计对应的多个GC日志,获取上述调优程序中上述目标程序的性能指标。
步骤304:若上述目标程序的性能指标匹配上述预设性能指标,则输出上述第一调优程序中采用的垃圾收集器和上述第一调优程序的堆空间的调优参数,作为上述目标程序的调优方案。
本发明实施例中,若上述目标程序的性能指标匹配上述预设性能指标,则输出上述第一调优程序中采用的垃圾收集器和上述第一调优程序的堆空间的调优参数,作为上述目标程序的调优方案。可以理解的是,一般可能需要经过多次的调优过程才能达到上述预设性能指标;若在后续的调优过程中,上述目标程序的性能指标匹配上述预设性能指标,则同样输出上述后续调优程序中采用的垃圾收集器和上述后续调优程序的堆空间的调优参数,作为上述目标程序的调优方案;即上述技术方案同样在本发明实施例的保护范围内。
若设定了预设性能指标,在调优的过程中,上述预设性能指标可作为调优过程停止的基准,合理的预设性能指标可以加速调优过程,同时可作为最后输出的调优方案是否被自动存储的判断标准。为了避免不恰当或不可达的预设性能指标导致过长的调优过程,因而预设性能指标只作为调优完成的判断标准之一。
步骤305:若上述目标程序的性能指标匹配上述预设性能指标失败,则分析上述第一调优程序,按照预设调优策略,调整上述第一调优程序的堆空间的调优参数,作为针对上述目标程序的第二调优程序的堆空间的调优参数。
可选地,上述预设性能指标包括延迟响应指标;上述延迟响应指标包括:全局垃圾回收Full GC的第一频率阈值,和/或Full GC的第一持续时间阈值,和/或次要垃圾回收Minor GC的第二频率阈值,和/或Minor GC的第二持续时间阈值;上述目标程序的性能指标包括:Full GC的频率,和/或Full GC的最大持续时间,和/或Minor GC的频率,和/或MinorGC的平均持续时间;
则上述步骤305,具体可以包括:
若上述Minor GC的平均持续时间大于上述Minor GC的第二持续时间阈值,则减小上述第一调优程序的堆空间的新生代存储区的初始值,作为针对上述目标程序的第二调优程序的堆空间的新生代存储区的初始值;
若上述Minor GC的频率大于上述Minor GC的第二频率阈值,则增大上述第一调优程序的堆空间的新生代存储区的初始值,作为针对上述目标程序的第二调优程序的堆空间的新生代存储区的初始值;
若上述Full GC的平均持续时间大于上述Full GC的第一持续时间阈值,则减小上述第一调优程序的堆空间的老年代存储区的初始值,作为针对上述目标程序的第二调优程序的堆空间的老年代存储区的初始值;
若上述Full GC的频率大于上述Full GC的第一频率阈值,则增大上述第一调优程序的堆空间的老年代存储区的初始值,作为针对上述目标程序的第二调优程序的堆空间的老年代存储区的初始值。
可选地,上述预设性能指标包括吞吐量指标;上述吞吐量指标包括:上述目标程序的线程用时占调优程序用时的第一比例阈值;上述目标程序的性能指标包括:上述目标程序的线程用时占上述第一调优程序用时的第一比值;上述采用的垃圾收集器包括Throughput(吞吐量)收集器,或者并行标记清除收集器CMS收集器;
则上述步骤305,具体可以包括:
若上述第一比值小于上述第一比例阈值且上述采用的垃圾收集器为上述Throughput收集器,则增大上述第一调优程序的堆空间的Eden存储区的初始值,和/或微调上述第一调优程序的堆空间的第一Survivor存储区的初始值和第一Survivor存储区的初始值;
若上述第一比值小于上述第一比例阈值且上述采用的垃圾收集器为CMS收集器,则增大上述第一调优程序的堆空间的新生代存储区的初始值,和/或增大上述第一调优程序的堆空间的老年代存储区的初始值。
Throughput收集器,即Parallel(并行)收集器,它是Java虚拟机的默认垃圾收集器,可以理解为多线程串行收集,在Serial(串行)收集基础上采用多线程方式进行GC,很好的弥补了串行收集的不足,可以大幅缩短应用程序的停顿时间,适合于吞吐量的调优。
CMS收集器基于“标记-清除”算法实现:首先初始化标记(initial mark),即查找那些距离类加载器最近的幸存对象;然后并发标记(concurrent mark),即所有被幸存对象引用的对象会被确认是否已经被追踪和校验;在标记的过程中,其他的线程依然在执行;在重新标记(remark)步骤,会再次检查那些在并行标记步骤中增加或者删除的与幸存对象引用的对象;最后并发交换(concurrent sweep),即转交垃圾回收过程处理。一旦采取了这种垃圾收集器,由GC导致的应用程序的停止时间会极其短暂。
CMS收集器只有在如下两种情景才会暂停所有的应用程序的线程:当标记永久代存储区中的对象时;当进行垃圾回收时,堆空间同步发生了一些变化。相比Parallel收集器,CMS收集器使用更多的CPU资源来确保应用有一个更好的吞吐量;可以通过XX:+USeParNewGC参数来选用CMS收集器。
可选地,上述预设性能指标包括内存占用指标;上述内存占用指标包括:上述堆空间的预设占用比例阈值,和/或Full GC的第二频率阈值,和/或上述目标程序的线程用时占调优程序用时的第二比例阈值;上述目标程序的性能指标包括:上述堆空间的最大占用比例,和/或Full GC频率,和/或上述目标程序的线程用时占上述第一调优程序用时的第一比值;
则上述步骤305,具体可以包括:
若上述堆空间的堆空间的最大占用比例大于上述堆空间的预设占用比例阈值,和/或上述Full GC的频率大于上述Full GC的第二频率阈值,和/或上述第一比值小于上述第二比例阈值,则获取上述第一调优程序的堆空间中第一活跃对象的平均大小和第二活跃对象的平均大小;上述第一活跃对象为Full GC后上述老年代存储区的对象;上述第二活跃对象为Full GC后上述永久代存储区的对象;
根据上述第一活跃对象的平均大小和第二活跃对象的平均大小,按照预设经验倍数,调整上述第一调优程序的堆空间的新生代存储区的初始值、老年代存储区的初始值和永久代存储区的初始值。
例如设置新生代和老年代存储区大小的最大值,和/或新生代和老年代存储区大小的初始值为第一活跃对象的平均大小的3-4倍;设置永久代存储区大小的最大值,和/或永久代存储区大小的初始值比第二活跃对象的平均大小大1.2-1.5倍;设置新生代存储区大小为老年代存储区大小的3-4倍。
步骤306:采用上述垃圾收集器,以及上述第二调优程序的堆空间的调优参数,执行针对上述目标程序的第二调优程序。
本发明实施例中,采用上述垃圾收集器,以及上述第二调优程序的堆空间的调优参数,执行针对上述目标程序的第二调优程序,继续进行后续调优过程。
可选地,上述在上述第一调优程序结束后,获取上述第一调优程序中上述目标程序的性能指标的步骤303之后,还可以包括:
记录上述第一调优程序中上述目标程序的性能指标,和上述第一调优程序中采用的垃圾收集器、上述第一调优程序的堆空间的调优参数,之间的第一映射关系;
根据上述第一映射关系,更新上述预设的垃圾回收调优方案库。
可以理解的是,每一次调优程序结束后,都可以记录每一次调优程序中上述目标程序的性能指标,和每一次调优程序中采用的垃圾收集器、每一次调优程序的堆空间的调优参数,之间的映射关系;并根据上述映射关系,更新上述预设的垃圾回收调优方案库;即上述技术方案也在本发明实施例的保护范围之内。本发明实施例可以扩大预设的垃圾回收调优方案库的容量,提高查找得到的匹配上述预设性能指标的调优方案的匹配度,便于得到相对更优的调优参数的起始值,进一步缩短调优时间。
本发明实施例包括以下优点:
一方面,通过目标程序调优的预设性能指标,在预设的垃圾回收方案中查找到匹配上述预设性能指标的调优方案,以上述匹配的调优方案中采用的垃圾收集器和堆空间的设置参数,作为上述目标程序的调优程序的起始值,从而得到较优的具有针对性的调优参数的起始值,缩短调优时间;
另一方面,通过记录调优过程对应的调优方案,扩大了预设的垃圾回收调优方案库的容量,提高查找得到的匹配上述预设性能指标的调优方案的匹配度,便于得到相对更优的调优参数的起始值,进一步缩短调优时间。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了本发明的一种虚拟机垃圾回收调优装置实施例的结构框图,具体可以包括如下模块:
调优方案匹配模块401,用于根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配上述预设性能指标的调优方案;上述调优方案包括采用的垃圾收集器以及上述虚拟机的堆空间的设置参数;
调优程序控制模块402,用于采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的调优程序的堆空间的调优参数的起始值,以上述预设性能指标作为上述调优程序的调优目标,执行针对上述目标程序的调优程序。
可选地,参照图5所示,在上述图4的基础上,上述调优程序控制模块402可以包括:
第一调优控制模块40201,用于采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的第一调优程序的堆空间的调优参数,执行针对上述目标程序的第一调优程序;
第一性能监控模块40202,用于在上述第一调优程序结束后,获取上述第一调优程序中上述目标程序的性能指标;
调优方案输出模块40203,用于若上述目标程序的性能指标匹配上述预设性能指标,则输出上述第一调优程序中采用的垃圾收集器和上述第一调优程序的堆空间的调优参数,作为上述目标程序的调优方案。
进一步地,上述调优程序控制模块402还可以包括:
调优参数控制模块40204,用于若上述目标程序的性能指标匹配上述预设性能指标失败,则分析上述第一调优程序,按照预设调优策略,调整上述第一调优程序的堆空间的调优参数,作为针对上述目标程序的第二调优程序的堆空间的调优参数;
第二调优控制模块40205,用于采用上述垃圾收集器,以及上述第二调优程序的堆空间的调优参数,执行针对上述目标程序的第二调优程序。
进一步地,上述装置还包括:
调优方案库记录模块,用于记录上述第一调优程序中上述目标程序的性能指标,和上述第一调优程序中采用的垃圾收集器、上述第一调优程序的堆空间的调优参数,之间的第一映射关系;
调优方案库更新模块,用于根据上述第一映射关系,更新上述预设的垃圾回收调优方案库。
可选地,上述预设性能指标可以包括内存占用指标,和/或延迟响应指标,和/或吞吐量指标。
本发明实施例包括以下优点:
一方面,通过目标程序调优的预设性能指标,在预设的垃圾回收方案中查找到匹配上述预设性能指标的调优方案,以上述匹配的调优方案中采用的垃圾收集器和堆空间的设置参数,作为上述目标程序的调优程序的起始值,从而得到较优的具有针对性的调优参数的起始值,缩短调优时间;
另一方面,通过记录调优过程对应的调优方案,扩大了预设的垃圾回收调优方案库的容量,提高查找得到的匹配上述预设性能指标的调优方案的匹配度,便于得到相对更优的调优参数的起始值,进一步缩短调优时间。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
图6是根据一示例性实施例示出的一种用于虚拟机垃圾回收调优的电子设备600的结构框图。例如,电子设备600可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图6,电子设备600可以包括以下一个或多个组件:处理组件602,存储器604,电源组件606,多媒体组件608,音频组件610,输入/输出(I/O)的接口612,传感器组件614,以及通信组件616。
处理组件602通常控制电子设备600的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件602可以包括一个或多个处理器620来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件602可以包括一个或多个模块,便于处理组件602和其他组件之间的交互。例如,处理部件602可以包括多媒体模块,以方便多媒体组件608和处理组件602之间的交互。
存储器604被配置为存储各种类型的数据以支持在设备600的操作。这些数据的示例包括用于在电子设备600上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器604可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件604为电子设备600的各种组件提供电力。电力组件604可以包括电源管理系统,一个或多个电源,及其他与为电子设备600生成、管理和分配电力相关联的组件。
多媒体组件608包括在上述电子设备600和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。上述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与上述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件608包括一个前置摄像头和/或后置摄像头。当电子设备600处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件610被配置为输出和/或输入音频信号。例如,音频组件610包括一个麦克风(MIC),当电子设备600处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器604或经由通信组件616发送。在一些实施例中,音频组件610还包括一个扬声器,用于输出音频信号。
I/O接口612为处理组件602和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件614包括一个或多个传感器,用于为电子设备600提供各个方面的状态评估。例如,传感器组件614可以检测到设备600的打开/关闭状态,组件的相对定位,例如上述组件为电子设备600的显示器和小键盘,传感器组件614还可以检测电子设备600或电子设备600一个组件的位置改变,用户与电子设备600接触的存在或不存在,电子设备600方位或加速/减速和电子设备600的温度变化。传感器组件614可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件614还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件614还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件616被配置为便于电子设备600和其他设备之间有线或无线方式的通信。电子设备600可以接入基于通信标准的无线网络,如Wi-Fi,2G或3G,或它们的组合。在一个示例性实施例中,通信部件614经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,上述通信部件614还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备600可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器604,上述指令可由电子设备600的处理器620执行以完成上述方法。例如,上述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当上述存储介质中的指令由终端的处理器执行时,使得终端能够执行一种启动应用程序的方法,上述方法具体可以包括:
根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配上述预设性能指标的调优方案;上述调优方案包括采用的垃圾收集器以及上述虚拟机的堆空间的设置参数;
采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的调优程序的堆空间的调优参数的起始值,以上述预设性能指标作为上述调优程序的调优目标,执行针对上述目标程序的调优程序。
可选地,上述采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的调优程序的堆空间的调优参数的起始值,以上述预设性能指标作为上述调优程序的调优目标,执行针对上述目标程序的调优程序的步骤,包括:
采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的第一调优程序的堆空间的调优参数,执行针对上述目标程序的第一调优程序;
在上述第一调优程序结束后,获取上述第一调优程序中上述目标程序的性能指标;
若上述目标程序的性能指标匹配上述预设性能指标,则输出上述第一调优程序中采用的垃圾收集器和上述第一调优程序的堆空间的调优参数,作为上述目标程序的调优方案。
进一步地,上述采用上述垃圾收集器,以上述堆空间的设置参数作为针对上述目标程序的调优程序的堆空间的调优参数,以上述预设性能指标作为上述调优程序的调优目标,执行针对上述目标程序的调优程序的步骤,还包括:
若上述目标程序的性能指标匹配上述预设性能指标失败,则分析上述第一调优程序,按照预设调优策略,调整上述第一调优程序的堆空间的调优参数,作为针对上述目标程序的第二调优程序的堆空间的调优参数;
采用上述垃圾收集器,以及上述第二调优程序的堆空间的调优参数,执行针对上述目标程序的第二调优程序。
进一步地,上述在上述第一调优程序结束后,获取上述第一调优程序中上述目标程序的性能指标的步骤之后,还包括:
记录上述第一调优程序中上述目标程序的性能指标,和上述第一调优程序中采用的垃圾收集器、上述第一调优程序的堆空间的调优参数,之间的第一映射关系;
根据上述第一映射关系,更新上述预设的垃圾回收调优方案库。
可选地,上述预设性能指标包括内存占用指标,和/或延迟响应指标,和/或吞吐量指标。
本发明实施例包括以下优点:
一方面,通过目标程序调优的预设性能指标,在预设的垃圾回收方案中查找到匹配上述预设性能指标的调优方案,以上述匹配的调优方案中采用的垃圾收集器和堆空间的设置参数,作为上述目标程序的调优程序的起始值,从而得到较优的具有针对性的调优参数的起始值,缩短调优时间;
另一方面,通过记录调优过程对应的调优方案,扩大了预设的垃圾回收调优方案库的容量,提高查找得到的匹配上述预设性能指标的调优方案的匹配度,便于得到相对更优的调优参数的起始值,进一步缩短调优时间。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以预测方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种虚拟机垃圾回收调优方法和装置、一种电子设备以及一种储存介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (12)
1.一种虚拟机垃圾回收调优方法,其特征在于,包括:
根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配所述预设性能指标的调优方案;所述调优方案包括采用的垃圾收集器以及所述虚拟机的堆空间的设置参数;
采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数的起始值,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序。
2.根据权利要求1所述的方法,其特征在于,所述采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数的起始值,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序的步骤,包括:
采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的第一调优程序的堆空间的调优参数,执行针对所述目标程序的第一调优程序;
在所述第一调优程序结束后,获取所述第一调优程序中所述目标程序的性能指标;
若所述目标程序的性能指标匹配所述预设性能指标,则输出所述第一调优程序中采用的垃圾收集器和所述第一调优程序的堆空间的调优参数,作为所述目标程序的调优方案。
3.根据权利要求2所述的方法,其特征在于,所述采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序的步骤,还包括:
若所述目标程序的性能指标匹配所述预设性能指标失败,则分析所述第一调优程序,按照预设调优策略,调整所述第一调优程序的堆空间的调优参数,作为针对所述目标程序的第二调优程序的堆空间的调优参数;
采用所述垃圾收集器,以及所述第二调优程序的堆空间的调优参数,执行针对所述目标程序的第二调优程序。
4.根据权利要求2所述的方法,其特征在于,所述在所述第一调优程序结束后,获取所述第一调优程序中所述目标程序的性能指标的步骤之后,还包括:
记录所述第一调优程序中所述目标程序的性能指标,和所述第一调优程序中采用的垃圾收集器、所述第一调优程序的堆空间的调优参数,之间的第一映射关系;
根据上述第一映射关系,更新所述预设的垃圾回收调优方案库。
5.根据权利要求1所述的方法,其特征在于,所述预设性能指标包括内存占用指标,和/或延迟响应指标,和/或吞吐量指标。
6.一种虚拟机垃圾回收调优装置,其特征在于,包括:
调优方案匹配模块,用于根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配所述预设性能指标的调优方案;所述调优方案包括采用的垃圾收集器以及所述虚拟机的堆空间的设置参数;
调优程序控制模块,用于采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数的起始值,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序。
7.根据权利要求6所述的装置,其特征在于,所述调优程序控制模块包括:
第一调优控制模块,用于采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的第一调优程序的堆空间的调优参数,执行针对所述目标程序的第一调优程序;
第一性能监控模块,用于在所述第一调优程序结束后,获取所述第一调优程序中所述目标程序的性能指标;
调优方案输出模块,用于若所述目标程序的性能指标匹配所述预设性能指标,则输出所述第一调优程序中采用的垃圾收集器和所述第一调优程序的堆空间的调优参数,作为所述目标程序的调优方案。
8.根据权利要求7所述的装置,其特征在于,所述调优程序控制模块还包括:
调优参数控制模块,用于若所述目标程序的性能指标匹配所述预设性能指标失败,则分析所述第一调优程序,按照预设调优策略,调整所述第一调优程序的堆空间的调优参数,作为针对所述目标程序的第二调优程序的堆空间的调优参数;
第二调优控制模块,用于采用所述垃圾收集器,以及所述第二调优程序的堆空间的调优参数,执行针对所述目标程序的第二调优程序。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括:
调优方案库记录模块,用于记录所述第一调优程序中所述目标程序的性能指标,和所述第一调优程序中采用的垃圾收集器、所述第一调优程序的堆空间的调优参数,之间的第一映射关系;
调优方案库更新模块,用于根据上述第一映射关系,更新所述预设的垃圾回收调优方案库。
10.根据权利要求6所述的装置,其特征在于,所述预设性能指标包括内存占用指标,和/或延迟响应指标,和/或吞吐量指标。
11.一种电子设备,其特征在于,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
根据目标程序的预设性能指标,在预设的垃圾回收调优方案库中查找到匹配所述预设性能指标的调优方案;所述调优方案包括采用的垃圾收集器以及所述虚拟机的堆空间的设置参数;
采用所述垃圾收集器,以所述堆空间的设置参数作为针对所述目标程序的调优程序的堆空间的调优参数的起始值,以所述预设性能指标作为所述调优程序的调优目标,执行针对所述目标程序的调优程序。
12.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-5中一个或多个所述的虚拟机垃圾回收调优方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710483539.0A CN109117242A (zh) | 2017-06-22 | 2017-06-22 | 虚拟机垃圾回收调优方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710483539.0A CN109117242A (zh) | 2017-06-22 | 2017-06-22 | 虚拟机垃圾回收调优方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109117242A true CN109117242A (zh) | 2019-01-01 |
Family
ID=64732960
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710483539.0A Pending CN109117242A (zh) | 2017-06-22 | 2017-06-22 | 虚拟机垃圾回收调优方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109117242A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110764874A (zh) * | 2019-10-23 | 2020-02-07 | 北京字节跳动网络技术有限公司 | Dalvik垃圾回收抑制的方法及装置、终端和存储介质 |
CN111352698A (zh) * | 2020-02-25 | 2020-06-30 | 北京奇艺世纪科技有限公司 | 一种jvm参数的调整方法及装置 |
CN112905418A (zh) * | 2021-03-02 | 2021-06-04 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种jvm调优方法及装置 |
CN113722102A (zh) * | 2021-09-09 | 2021-11-30 | 北京字节跳动网络技术有限公司 | 一种内存分配方法及装置 |
CN113778740A (zh) * | 2021-11-10 | 2021-12-10 | 中航金网(北京)电子商务有限公司 | 一种基于垃圾回收日志的异常处理方法及装置 |
CN114816760A (zh) * | 2022-05-13 | 2022-07-29 | 兰考堌阳医院有限公司 | 一种交互式护理看板系统及存储介质 |
CN115080221A (zh) * | 2021-03-15 | 2022-09-20 | 北京字节跳动网络技术有限公司 | 一种内存资源使用控制方法、装置、设备及存储介质 |
CN116361200A (zh) * | 2022-09-30 | 2023-06-30 | 荣耀终端有限公司 | 一种内存垃圾的回收方法及电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、系统及方法 |
US8499010B2 (en) * | 2010-12-22 | 2013-07-30 | International Business Machines Corporation | Garbage collection in a multiple virtual machine environment |
CN103514102A (zh) * | 2013-10-25 | 2014-01-15 | 中国联合网络通信集团有限公司 | 一种Java虚拟机实现内存垃圾回收的方法及装置 |
CN103825769A (zh) * | 2014-03-17 | 2014-05-28 | 华为技术有限公司 | 网络运维管理方法与装置 |
US20150058381A1 (en) * | 2013-08-21 | 2015-02-26 | Oracle International Corporation | System and method for dynamically selecting a garbage collection algorithm based on the contents of heap regions |
CN105824687A (zh) * | 2016-03-15 | 2016-08-03 | 四川长虹电器股份有限公司 | 一种Java虚拟机性能自动调优的方法及装置 |
CN106033336A (zh) * | 2015-03-12 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 解决Maven依赖冲突的方法、装置和系统 |
CN106648882A (zh) * | 2015-11-04 | 2017-05-10 | 龙芯中科技术有限公司 | 基于虚拟机的垃圾回收方法及装置 |
-
2017
- 2017-06-22 CN CN201710483539.0A patent/CN109117242A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281458A (zh) * | 2008-05-14 | 2008-10-08 | 华为技术有限公司 | 一种垃圾回收的装置、系统及方法 |
US8499010B2 (en) * | 2010-12-22 | 2013-07-30 | International Business Machines Corporation | Garbage collection in a multiple virtual machine environment |
US20150058381A1 (en) * | 2013-08-21 | 2015-02-26 | Oracle International Corporation | System and method for dynamically selecting a garbage collection algorithm based on the contents of heap regions |
CN103514102A (zh) * | 2013-10-25 | 2014-01-15 | 中国联合网络通信集团有限公司 | 一种Java虚拟机实现内存垃圾回收的方法及装置 |
CN103825769A (zh) * | 2014-03-17 | 2014-05-28 | 华为技术有限公司 | 网络运维管理方法与装置 |
CN106033336A (zh) * | 2015-03-12 | 2016-10-19 | 阿里巴巴集团控股有限公司 | 解决Maven依赖冲突的方法、装置和系统 |
CN106648882A (zh) * | 2015-11-04 | 2017-05-10 | 龙芯中科技术有限公司 | 基于虚拟机的垃圾回收方法及装置 |
CN105824687A (zh) * | 2016-03-15 | 2016-08-03 | 四川长虹电器股份有限公司 | 一种Java虚拟机性能自动调优的方法及装置 |
Non-Patent Citations (2)
Title |
---|
TONY: "JVM:从实际案例聊聊Java应用的GC优化", 《HTTPS://WWW.CNBLOGS.COM/ITTANGTANG/P/4126395.HTML》 * |
韦庆明: "Java性能优化之JVM GC(垃圾回收机制)", 《HTTPS://ZHUANLAN.ZHIHU.COM/P/25539690》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110764874B (zh) * | 2019-10-23 | 2022-06-24 | 北京字节跳动网络技术有限公司 | Dalvik垃圾回收抑制的方法及装置、终端和存储介质 |
CN110764874A (zh) * | 2019-10-23 | 2020-02-07 | 北京字节跳动网络技术有限公司 | Dalvik垃圾回收抑制的方法及装置、终端和存储介质 |
CN111352698A (zh) * | 2020-02-25 | 2020-06-30 | 北京奇艺世纪科技有限公司 | 一种jvm参数的调整方法及装置 |
CN111352698B (zh) * | 2020-02-25 | 2023-12-22 | 北京奇艺世纪科技有限公司 | 一种jvm参数的调整方法及装置 |
CN112905418A (zh) * | 2021-03-02 | 2021-06-04 | 湖南快乐阳光互动娱乐传媒有限公司 | 一种jvm调优方法及装置 |
CN115080221A (zh) * | 2021-03-15 | 2022-09-20 | 北京字节跳动网络技术有限公司 | 一种内存资源使用控制方法、装置、设备及存储介质 |
CN115080221B (zh) * | 2021-03-15 | 2024-06-18 | 北京字节跳动网络技术有限公司 | 一种内存资源使用控制方法、装置、设备及存储介质 |
CN113722102B (zh) * | 2021-09-09 | 2023-08-04 | 抖音视界有限公司 | 一种内存分配方法及装置 |
CN113722102A (zh) * | 2021-09-09 | 2021-11-30 | 北京字节跳动网络技术有限公司 | 一种内存分配方法及装置 |
CN113778740A (zh) * | 2021-11-10 | 2021-12-10 | 中航金网(北京)电子商务有限公司 | 一种基于垃圾回收日志的异常处理方法及装置 |
CN114816760A (zh) * | 2022-05-13 | 2022-07-29 | 兰考堌阳医院有限公司 | 一种交互式护理看板系统及存储介质 |
CN114816760B (zh) * | 2022-05-13 | 2023-04-28 | 兰考堌阳医院有限公司 | 一种交互式护理看板系统及存储介质 |
CN116361200B (zh) * | 2022-09-30 | 2023-11-14 | 荣耀终端有限公司 | 一种内存垃圾的回收方法及电子设备 |
CN116361200A (zh) * | 2022-09-30 | 2023-06-30 | 荣耀终端有限公司 | 一种内存垃圾的回收方法及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109117242A (zh) | 虚拟机垃圾回收调优方法、装置、电子设备及存储介质 | |
CN103473011B (zh) | 一种移动终端性能检测方法、装置及移动终端 | |
CN105517112A (zh) | 显示WiFi网络信息的方法和装置 | |
WO2016192189A1 (zh) | 一种降低终端设备功耗的方法及装置 | |
CN106708554B (zh) | 程序运行方法及装置 | |
CN103530115B (zh) | 一种应用程序显示方法、装置及终端设备 | |
CN105224462A (zh) | 控件元素的识别方法和装置 | |
CN108965599A (zh) | 回忆视频处理方法及相关产品 | |
CN109284261A (zh) | 应用查找方法、装置、存储介质及电子设备 | |
CN107105093A (zh) | 基于手部轨迹的拍照控制方法、装置及终端 | |
CN105550035A (zh) | 后台进程控制方法及装置 | |
CN106303234A (zh) | 拍照处理方法及装置 | |
CN104615546A (zh) | 文件数据管理方法及装置 | |
CN113742366A (zh) | 数据处理方法、装置、计算机设备及存储介质 | |
CN105205066B (zh) | 一种图片查找方法和装置 | |
CN109144447A (zh) | 分屏窗口调节方法、装置、存储介质及电子设备 | |
CN104091600A (zh) | 一种歌声位置检测方法及装置 | |
CN104731439A (zh) | 一种手势封装和任务执行方法、装置 | |
CN106412629B (zh) | 媒体数据传输的处理方法、装置、系统及计算机可读媒体介质 | |
CN108563416A (zh) | 应用显示方法、装置、存储介质及电子设备 | |
CN109426504A (zh) | 程序的处理方法、装置、电子设备及存储介质 | |
CN109710134A (zh) | 一种显示方法和电子设备 | |
CN105045686A (zh) | 文件恢复方法及装置 | |
CN107577810A (zh) | 数据写入方法、装置及计算机可读存储介质 | |
CN104408081B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190101 |