当前位置: 首页 > 专利查询>董利军专利>正文

一种JAVA虚拟机自适应优化方法、装置以及可读存储介质制造方法及图纸

技术编号:19008953 阅读:45 留言:0更新日期:2018-09-22 08:51
本发明专利技术公开了一种JAVA虚拟机自适应优化方法、装置以及可读存储介质,用以解决现有JAVA虚拟机的常用数据采集方法存在信息质量低或者开销太大的问题。该方法包括以下步骤:在编译过程中,所述JAVA虚拟机调用插桩器对对象相关的指令进行插桩;应用程序在运行的过程中,将收集到的对象信息写入到追踪缓冲区;所述追踪缓冲区溢出并发出用户段错误信号,所述JAVA虚拟机接收到信号并唤醒追踪分析器;所述追踪分析器调用自适应优化算法对规律的对象访问进行预取优化。本发明专利技术弥补了Java虚拟机中现有的动态编译技术的不足,同时为了降低框架的运行时开销,进一步提高了Java程序的性能。

An adaptive optimization method, device and readable storage medium for JAVA virtual machine

The invention discloses an adaptive optimization method, a device and a readable storage medium for JAVA virtual machine, which can solve the problems of low information quality or high overhead in common data acquisition methods of existing JAVA virtual machine. The method comprises the following steps: in the compilation process, the JAVA virtual machine calls the stapler to insert the instructions related to the object; in the running process, the application program writes the collected object information into the tracking buffer; the tracking buffer overflows and emits a user segment error signal, and the JAVA virtual machine receives the error signal. Go to the signal and wake up the tracking analyzer, which prefetches and optimizes the regular object access by invoking an adaptive optimization algorithm. The invention makes up the deficiency of the existing dynamic compilation technology in the Java virtual machine, and further improves the performance of the Java program in order to reduce the running cost of the framework.

【技术实现步骤摘要】
一种JAVA虚拟机自适应优化方法、装置以及可读存储介质
本专利技术涉及计算机语言
,具体涉及一种JAVA虚拟机自适应优化方法、装置以及可读存储介质。
技术介绍
JAVA虚拟机(Javavirtualmachine)类似于抽象意义上的堆栈计算机,其作用是装载类文件,然后运行其目标代码,目标代码的操作次数都源于堆栈。现在,常见的处理器都采用寄存器结构,JAVA虚拟机要对这些针对堆栈的命令通过即时编辑机或解释机进行解释,解读为寄存器可以执行的指令。在解释和执行的次序上是解释一次执行一次,并不包括解释后的机器指令。如果需要多次执行目标程序,就要多次解释执行。但即时编译机会把首次执行的程序翻译为本地程序,并在内存中缓存代码,后续可以再次调用而实现该方法的复用。JAVA虚拟机可以动态自适应去装载,这种动态自适应装载类的模式促进了Java的灵活的网络性质。JAVA虚拟机既能装载本地的类程序,也可以对网络上的类进行装载。JAVA虚拟机为了安全地管理这些不同装载器装载的类,对其拟定了不同的名字,以此,JAVA虚拟机能够依照名字把代码列入不同的类型,然后对不同类型的代码执行不同的操作。目前在JAVA虚拟机中广泛使用的收集方法有采样法和插桩法。采样法开销小,适用于收集粗粒度的信息,比如方法调用次数的统计;但是,若想得到细粒度的信息,采样法不能够实现。插桩法与采样法相反,它可以帮助研究者们收集到细粒度的信息,但开销很大,可以采用插桩法来帮助离线的数据分析,或者在程序开始运行的一段时间收集信息以降低开销,但是,程序在刚开始的行为不足以反映程序将来的行为,尤其是堆上的数据访问。上述两种数据收集方法均存在不足之处,需要进一步优化。
技术实现思路
本专利技术的目的在于提供一种JAVA虚拟机自适应优化方法、装置以及可读存储介质,用以解决现有JAVA虚拟机的常用数据采集方法存在信息质量低或者开销太大的问题。为实现上述目的,本专利技术的技术方案为:一种JAVA虚拟机自适应优化方法,该方法包括以下步骤:S101、在编译过程中,所述JAVA虚拟机调用插桩器对对象相关的指令进行插桩;S102、应用程序在运行的过程中,将收集到的对象信息写入到追踪缓冲区;S103、所述追踪缓冲区溢出并发出用户段错误信号,所述JAVA虚拟机接收到信号并唤醒追踪分析器;S104、所述追踪分析器调用自适应优化算法对规律的对象访问进行预取优化。进一步,所述JAVA虚拟机自适应优化方法,还包括以下步骤:反复执行插桩、应用程序运行、收集对象信息、反插桩以及预取优化,降低所述JAVA虚拟机的开销。进一步的,所述追踪分析器调用自适应优化算法对规律的对象访问进行预取优化的步骤包括:S201、计算一条指令的访问步长;S202、更新步长访问表中该步长出现的频率,并检测该步长是否成为热点步长;S203、通知插桩解除器取消对规律指令的插桩;S204、指导预取器对规律的对象访问进行预取优化。进一步的,所述规律的对象访问是对于一条特定的对象相关的指令,将以固定的步长去访问堆上的某个对象,对应的步长为热点步长。进一步的,所述JAVA虚拟机自适应优化方法,还包括以下步骤:设定自适应优化算法的数据结构包括:追踪缓冲区:追踪缓冲区中的每一项分别包括被记录信息的指令地址、该指令访问对象的基地址以及偏移;步长访问表:采用指令地址作为键值对其进行索引,数组中记录的是该条指令所使用的各种步长的频率。进一步的,所述JAVA虚拟机自适应优化方法,还包括以下步骤:若其中某个步长出现的频率超过追踪缓冲区长度的一半时,判定该指令是规律的指令,相应的步长为热点步长。进一步的,所述追踪分析器调用自适应优化算法对规律的对象访问进行预取优化的步骤具体包括:S301、所述追踪缓冲区中的每一项对应一个指令窗口,所述指令窗口中的第1条指令采用Curr_wind标记;S302、读取Curr_wind所指向的项中指令地址,记为ip0;在所述指令窗口中搜索指令地址为ip0的项;若找到执行步骤S303,否则执行步骤S305;S303、将两项中指令访问对象的偏移相减得到步长,然后由ip0索引到步长访问表,若不存在,则执行步骤S304;否则,更新相应步长的频率,同时判断该步长是否热点步长;若是,则执行步骤S305,否则,执行步骤S306;S304、在步长访问表中添加PC为ip0的项,同时将该步长频率设置为1,执行步骤S305;S305、Curr_wind←Curr_wind+1,执行步骤S302;S306、插桩解除器根据指令的地址停止对当前指令的插桩,执行步骤S307;S307、预取器根据指令的地址和热点步长计算出预取的数据地址,指定对象的地址为addr,热点的步长为stride,那么,最后的预取指令为prefetch(addr+d×stride),其中d为预取距离。prefetch()是基于预取器的一种指令预取命令格式。基于同一专利技术构思,本专利技术另一方面提供了一种JAVA虚拟机自适应优化装置,该装置包括:插桩器Patcher,用于所述JAVA虚拟机调用来给应用程序进行插桩;跟踪Trace缓冲区,用于当应用程序往所述跟踪缓冲区中存入数据时,一旦溢出,则产生段错误信号;跟踪Trace缓冲区是一个64K字节的缓冲区,缓冲区中每一项大小为16字节;缓冲区自顶向下写入,如图4所示,定义缓冲区的顶部为trace_buf_top,底部为trace_buf_bottom。缓冲区以下的页面标记为不可写。跟踪Trace分析器,用于对所述跟踪缓冲区中数据进行分析,若分析的结果表明当前堆上访问存在一定的规律性时,那么它将唤醒插桩解除器Dispatcher和预取器Prefetcher;整个过程不需要用户的参与,根据程序的运行结果自动地进行分析和调整,是一种自适应的过程。JAVA虚拟机一旦接收到段错误的信号,便会唤醒跟踪分析器。插桩解除器Dispatcher,用于对应用程序解除插桩,由所述跟踪分析器根据程序运行的情况自适应在指令窗口计算得到热点步长调用;预取器Prefetcher,用于对应用程序进行预取优化,由所述跟踪分析器根据程序运行的情况在指令窗口计算得到不是热点步长自适应调用。基于同一专利技术构思,本专利技术另一方面提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有JAVA虚拟机自适应优化程序,所述JAVA虚拟机自适应优化程序被处理器执行时实现如上述的JAVA虚拟机自适应优化方法的步骤。本专利技术具有如下优点:本申请的JAVA虚拟机自适应优化方法、装置以及可读存储介质,针对Java程序中现有局部性的问题及其对应用程序性能的影响,拟通过插桩来收集细粒度的信息,在程序运行的过程中,我们会根据反馈的信息自适应地调整插桩以降低开销,同时为了进一步减少插桩带来的影响,我们从Java程序的特性出发,尽量减少插桩的数目。弥补了Java虚拟机中现有的动态编译技术的不足,同时为了降低框架的运行时开销,进一步提高了Java程序的性能。附图说明图1是本专利技术实施例的一种JAVA虚拟机自适应优化方法流程框图。图2是调用自适应优化算法对规律的对象访问进行预取优化流程框图。图3是本专利技术实施例的一种JAVA虚拟机自适应优化装置结构框图。图4是跟踪缓冲区结构原理图。图5是自适应优化算法中数据结构原本文档来自技高网
...
一种JAVA虚拟机自适应优化方法、装置以及可读存储介质

【技术保护点】
1.一种JAVA虚拟机自适应优化方法,其特征在于,所述方法包括以下步骤:S101、在编译过程中,所述JAVA虚拟机调用插桩器对对象相关的指令进行插桩;S102、应用程序在运行的过程中,将收集到的对象信息写入到追踪缓冲区;S103、所述追踪缓冲区溢出并发出用户段错误信号,所述JAVA虚拟机接收到信号并唤醒追踪分析器;S104、所述追踪分析器调用自适应优化算法对规律的对象访问进行预取优化。

【技术特征摘要】
1.一种JAVA虚拟机自适应优化方法,其特征在于,所述方法包括以下步骤:S101、在编译过程中,所述JAVA虚拟机调用插桩器对对象相关的指令进行插桩;S102、应用程序在运行的过程中,将收集到的对象信息写入到追踪缓冲区;S103、所述追踪缓冲区溢出并发出用户段错误信号,所述JAVA虚拟机接收到信号并唤醒追踪分析器;S104、所述追踪分析器调用自适应优化算法对规律的对象访问进行预取优化。2.根据权利要求1所述的一种JAVA虚拟机自适应优化方法,其特征在于,所述方法还包括以下步骤:反复执行插桩、应用程序运行、收集对象信息、反插桩以及预取优化,降低所述JAVA虚拟机的开销。3.根据权利要求1所述的一种JAVA虚拟机自适应优化方法,其特征在于,所述追踪分析器调用自适应优化算法对规律的对象访问进行预取优化的步骤包括:S201、计算一条指令的访问步长;S202、更新步长访问表中该步长出现的频率,并检测该步长是否成为热点步长;S203、通知插桩解除器取消对规律指令的插桩;S204、指导预取器对规律的对象访问进行预取优化。4.根据权利要求3所述的一种JAVA虚拟机自适应优化方法,其特征在于,所述规律的对象访问是对于一条特定的对象相关的指令,将以固定的步长去访问堆上的某个对象,对应的步长为热点步长。5.根据权利要求4所述的一种JAVA虚拟机自适应优化方法,其特征在于,还包括以下步骤:设定自适应优化算法的数据结构包括:追踪缓冲区:追踪缓冲区中的每一项分别包括被记录信息的指令地址、该指令访问对象的基地址以及偏移;步长访问表:采用指令地址作为键值对其进行索引,数组中记录的是该条指令所使用的各种步长的频率。6.根据权利要求5所述的一种JAVA虚拟机自适应优化方法,其特征在于,所述JAVA虚拟机自适应优化方法,还包括以下步骤:若其中某个步长出现的频率超过追踪缓冲区长度的一半时,判定该指令是规律的指令,相应的步长为热点步长。7.根据权利要求6所述的一种JAVA虚拟机自适应优化方法,其特征在于,所述追踪分析器调用自适应优化算法对规律的对象访问...

【专利技术属性】
技术研发人员:董利军刘尚国
申请(专利权)人:董利军
类型:发明
国别省市:上海,31

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

1