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虚拟机中广泛使用的收集方法有采样法和插桩法。采样法开销小,适用于收集粗粒度的信息,比如方法调用次数的统计;但是,若想得到细粒度的信息,采样法不能够实现。插桩法与采样法相反,它可以帮助研究者们收集到细粒度的信息,但开销很大,可以采用插桩法来帮助离线的数据分析,或者在程序开始运行的一段时间收集信息以降低开销,但是,程序在刚开始的行为不足以反映程序将来的行为,尤其是堆上的数据访问。 ...
【技术保护点】
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虚拟机自适应优化方法,其特征在于,所述追踪分析器调用自适应优化算法对规律的对象访问...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。