Java虚拟机优化方法及系统技术方案

技术编号:23512524 阅读:19 留言:0更新日期:2020-03-17 23:56
本申请公开了Java虚拟机优化方法及系统,其中所述方法包括:获取Java虚拟机JVM的参数的当前配置,所述参数包括初始堆内存、最大堆内存、新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值;确定所生成的大小堆dump文件是异常生成的dump文件还是FullGC前/后生成的dump文件;响应于确定dump文件是异常生成的dump文件,重新配置初始堆内存、最大堆内存和对象GC年龄阈值;响应于确定dump文件是FullGC前/后生成的dump文件,调整新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值。本发明专利技术使能节省开发时间,提高开发效率。

Java virtual machine optimization method and system

【技术实现步骤摘要】
Java虚拟机优化方法及系统
本申请涉及电数字数据处理领域,尤其涉及Java虚拟机优化方法及系统。
技术介绍
UNIEAP是东软集团开发的开发平台。对于UNIEAP初学开发者而言,内存溢出是十分常见的现象。对于不同设备,Java虚拟机(JVM)的最佳参数配置亦各有不同。目前,对于UNIEAP的初学开发者,由于UNIEAP版本的不同以及设备的参数不同,造成JVM大小堆不尽相同。开发过程中,新生代、老年代、持久代的对象的创建和回收策略各不相同,GC回收(垃圾回收)不及时或不能完全回收,容易造成内存的堆栈溢出。因而需要一种避免UNIEAP初学者在JVM参数配置时花费过多时间的解决方案。
技术实现思路
为了克服现有技术中存在的不足,本专利技术要解决的技术问题是提供一种Java虚拟机优化方法及系统,其使能节省开发者的时间,提高开发效率。为解决上述技术问题,根据本专利技术的第一方面,提供一种Java虚拟机优化方法,该方法包括:获取Java虚拟机JVM的参数的当前配置,所述参数包括初始堆内存、最大堆内存、新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值;确定所生成的大小堆dump文件是异常生成的dump文件还是FullGC前/后生成的dump文件;响应于确定dump文件是异常生成的dump文件,重新配置初始堆内存、最大堆内存和对象GC年龄阈值;响应于确定dump文件是FullGC前/后生成的dump文件,调整新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值。作为本专利技术所述方法的改进,所述响应于确定dump文件是FullGC前、后生成的dump文件,调整新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值包括:记录FullGC执行的次数和执行时间;根据FullGC执行的次数调整对象GC年龄阈值和对象直接晋升为老年代阈值,FullGC执行的次数越多,对象GC年龄阈值和对象直接晋升为老年代阈值越小。作为本专利技术所述方法的另一种改进,所述方法还包括:记录FullGC执行前后初始堆内存和最大堆内存可用空间的变化;响应于所述变化小于预定阈值,扩大初始堆内存和最大堆内存。作为本专利技术所述方法的又一种改进,所述方法还包括:记录并保存出现堆栈异常次数少于第一预定次数及FullGC次数少于第二预定次数的JVM参数并作为相应设备的JVM优化配置参数。作为本专利技术所述方法的再一种改进,所述方法还包括:响应于空余堆内存小于第一阈值,增大初始堆内存;及响应于空余堆内存大于第二阈值,减小最大堆内存。作为本专利技术所述方法的另一种改进,所述方法还包括:响应于确定新设备与JVM优化配置参数所对应的设备为同样或同类设备,将所述JVM优化配置参数作为新设备的初始JVM配置参数。作为本专利技术所述方法的又一种改进,其中所述响应于确定dump文件是异常生成的dump文件,重新配置初始堆内存、最大堆内存和对象GC年龄阈值包括:增大初始堆内存和最大堆内存;及减小对象GC年龄阈值。为解决上述技术问题,根据本专利技术的第二方面,提供一种Java虚拟机优化系统,该系统包括:当前配置获取模块,用于获取Java虚拟机JVM的参数的当前配置,所述参数包括初始堆内存、最大堆内存、新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值;文件类型确定模块,用于确定所生成的大小堆dump文件是异常生成的dump文件还是FullGC前/后生成的dump文件;重新配置模块,用于响应于确定dump文件是异常生成的dump文件,重新配置初始堆内存、最大堆内存和对象GC年龄阈值;调整模块,用于响应于确定dump文件是FullGC前/后生成的dump文件,调整新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值。为解决上述技术问题,本专利技术的有形计算机可读介质,包括用于执行本专利技术的Java虚拟机优化方法的计算机程序代码。为解决上述技术问题,本专利技术提供一种装置,包括至少一个处理器;及至少一个存储器,含有计算机程序代码,所述至少一个存储器和所述计算机程序代码被配置为利用所述至少一个处理器使得所述装置执行本专利技术的Java虚拟机优化方法的至少部分步骤。按照本专利技术,可根据dump文件情况实时调整jvm参数,使得开发过程更加便利,节约时间,从而提高尤其是初学开发者的开发效率。另外,通过记录不同设备的最佳参数配置,可以根据过往的设备参数初始化新设备参数配置,同样节省开发时间。结合附图阅读本专利技术实施方式的详细描述后,本专利技术的其它特点和优点将变得更加清楚。附图说明图1为根据本专利技术方法的一实施例的流程图。图2为根据本专利技术系统的一实施例的结构示意图。为清晰起见,这些附图均为示意性及简化的图,它们只给出了对于理解本专利技术所必要的细节,而省略其他细节。具体实施方式下面参照附图对本专利技术的实施方式和实施例进行详细说明。通过下面给出的详细描述,本专利技术的适用范围将显而易见。然而,应当理解,在详细描述和具体例子表明本专利技术优选实施例的同时,它们仅为说明目的给出。图1示出了根据本专利技术的Java虚拟机优化方法的一优选实施例的流程图。在步骤S102,获取Java虚拟机JVM的参数的当前配置,JVM参数包括但不限于初始堆内存-Xms、最大堆内存-Xmx、新生代与老年代的比例-XX:NewRatio、对象GC年龄阈值-XX:MaxTenuringThreshold和对象直接晋升为老年代阈值-XX:PretenureSizeThreshold。JVM具体参数配置可被记录。软件运行时,通过脚本(Windows,Mac,Linux可能需要不同的脚本,脚本的执行可嵌入软件也可以手动执行)获取设备的配置参数(如:Windows:32位/64位、物理内存、CPU信息)。JVM参数可根据设备的配置参数进行初始化配置或者结合大数据设定与当前设备相当的设备的最优JVM参数配置作为初始配置。JVM通用参数配置如下:大小堆设置-Xms:初始堆内存。默认物理内存的1/64,也是最小分配堆内存。当空余堆内存小于40%时,会增加到-Xms的最大限制;-Xmx:最大堆内存。默认物理内存的1/4,当空余堆内存大于70%时,会减小到-Xms的最小限制。一般情况下,开发者在初始化时会把-Xmx和-Xms大小设置为一样,这样虚拟机不会再自动增大或减小内存占用,虚拟机相对稳定。如果这两个参数不一样,那么虚拟机会先获取-Xms的最小内存,当内存不够用时,会逐步申请扩大内存,最大为-Xmx,当虚拟机卸载一部分程序(即GC回收起了作用),那么一部分使用的内存会变为可用,当这个空余内存大于70%时,为了节省设备内存,会自动优化,减少内存占用,重新降至-Xms。-XX:PermSize:非堆内存的初始值,默认物理内存的1/64,也是最小非堆内存;...

【技术保护点】
1.一种Java虚拟机优化方法,其特征在于,所述方法包括:/n获取Java虚拟机JVM的参数的当前配置,所述参数包括初始堆内存、最大堆内存、新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值;/n确定所生成的大小堆dump文件是异常生成的dump文件还是FullGC前/后生成的dump文件;/n响应于确定dump文件是异常生成的dump文件,重新配置初始堆内存、最大堆内存和对象GC年龄阈值;/n响应于确定dump文件是FullGC前/后生成的dump文件,调整新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值。/n

【技术特征摘要】
1.一种Java虚拟机优化方法,其特征在于,所述方法包括:
获取Java虚拟机JVM的参数的当前配置,所述参数包括初始堆内存、最大堆内存、新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值;
确定所生成的大小堆dump文件是异常生成的dump文件还是FullGC前/后生成的dump文件;
响应于确定dump文件是异常生成的dump文件,重新配置初始堆内存、最大堆内存和对象GC年龄阈值;
响应于确定dump文件是FullGC前/后生成的dump文件,调整新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值。


2.根据权利要求1所述的方法,其特征在于,所述响应于确定dump文件是FullGC前、后生成的dump文件,调整新生代与老年代的比例、对象GC年龄阈值和对象直接晋升为老年代阈值包括:
记录FullGC执行的次数和执行时间;
根据FullGC执行的次数调整对象GC年龄阈值和对象直接晋升为老年代阈值,FullGC执行的次数越多,对象GC年龄阈值和对象直接晋升为老年代阈值越小。


3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
记录FullGC执行前后初始堆内存和最大堆内存可用空间的变化;
响应于所述变化小于预定阈值,扩大初始堆内存和最大堆内存。


4.根据权利要求1所述的方法,所述方法还包括:
记录并保存出现堆栈异常次数少于第一预定次数及FullGC次数少于第二预定次数的JVM参数并作为相应设备的JVM优化配置参数。


5.根据权利要求1所述的方法,所述方法还包括:
响应于空余堆内存小于第一阈值,增大初始堆内存;及
响应于空余堆内存大于第二...

【专利技术属性】
技术研发人员:胡阳辉
申请(专利权)人:望海康信北京科技股份公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1