[发明专利]一种支持混合模式执行的Java虚拟机执行引擎有效
申请号: | 201110227049.7 | 申请日: | 2011-08-09 |
公开(公告)号: | CN102236576A | 公开(公告)日: | 2011-11-09 |
发明(设计)人: | 杨珉;张源;周波;朱东来 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F9/45 | 分类号: | G06F9/45;G06F9/455 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;盛志范 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 支持 混合 模式 执行 java 虚拟机 引擎 | ||
技术领域
本发明属于Java编译运行环境设计技术领域,具体涉及一种Java虚拟机执行引擎,包括Java类加载、Java本地方法接口,字节码解释器和即时编译器,以及它们之间的协同。
背景技术
执行引擎是程序代码得到执行、程序逻辑得到实现的功能组件。对于Java语言而言,其执行引擎是Java虚拟机(Java Virtual Machine)中用以执行由Java的源代码经Java静态编译器编译得到的字节码的功能组件。Java执行引擎是Java虚拟的核心组成部分。
Java虚拟机一般有两种执行引擎,解释器(Interpreter)与即时编译器(Just-In-Time Compiler)。解释器执行Java程序的原理是对Java字节码进行逐一的语义解释并在解释过程中借助虚拟数据结构进行相应的数据管理;即时编译器是先将字节码进一步编译为可以在宿主机上运行的机器代码,然后执行这些代码。由于一条字节码表示的语义丰富,且字节码长度小,用解释器执行字节码时对内存等资源的需求不高,因此解释器在内存、CPU等资源受限的嵌入式设备上应用广泛。其缺点是,反复调用的方法需要反复解释,而这些解释可能是很慢的,从而影响到程序的性能,用户的体验。即时编译器则是将方法的字节码编译为在宿主机上可执行的机器码,这些机器码比相应的字节码执行更快,同时又可以借助传统的编译器优化技术对生成的机器码进行优化,使程序执行更快,性能更佳。然而,相比于原有的字节码,即时编译器生成的代码量会增加数倍,从而增加代码所占的存储资源,这对于存储资源有限的嵌入式设置而言是难以接受的。除此之外,解释器实现简单,而即时编译器则更为复杂。
可见,目前的Java虚拟机执行引擎中缺少一种既能获得好的性能和更快的执行速度,又不造成程序代码的过度膨胀的执行引擎。
为了既能获得好的性能和更快的执行速度,又不造成程序代码的过度膨胀,Java虚拟机需要新的执行引擎,该执行引擎:既有解释器的低资源需求的特性又有即时编译器生成的代码的高效性。
发明内容
本发明的目的是提供一种既能获得好的性能和更快的执行速度,又不造成程序代码的过度膨胀的Java虚拟机执行引擎。
本发明调研了运行于Android操作系统之上的Java虚拟机中解释器和即时编译器被执行方法的调用者是执行引擎独立的,即不依赖于具体某个执行引擎;并试验发现程序执行方法的特征,即只有少数的Java方法会被反复执行,多数方法只执行一次或几次。这些发现表明,方法调用关系可以发生在不同的执行引擎之间或者说在执行时,不同的方法可以被分发至不同的引擎。
本发明提供的Java虚拟机执行引擎,借助一个基于解释器和即时编译器的方法执行分发策略(Dispatch Strategy),并设计解释器和即时编译器两种不同模式之间的方法调用桥(Call Bridge),在分发策略和方法调用桥的基础上,最终实现方法的混合模式执行。
本发明分析了Java方法的加载特点:Java方法的编译执行与加载发生在不同的阶段。方法的加载在加载Java类时发生,类加载先于方法编译执行。因此,分发策略也可以借助类加载的特点得以实现。同时,本发明也分析了方法的调用特点:Java方法的调用只依赖于特定的调用准则,而与具体的执行引擎无关。因此,方法调用桥可以利用该特点得以实现,从而实现混合模式执行。
基于上述分析,本发明把该混合模式执行引擎的实现分为两个阶段:方法分发和混合执行。在方法分发阶段,本发明提供了方法分发框架,为了使混合引擎更为灵活性,本发明支持多种分发策略,如按方法热度分发或者按所需要的寄存器数量进行分发。被分发的方法将被标记以指示虚拟机在随后的编译执行中,将方法交付于标记对应的执行引擎执行。在混合执行阶段,虚拟机依据方法标记对方法进行执行,如果需要进行解释器到即时编译器或者即时编译器到解释器的跨引擎执行时,本发明先经过上述方法调用桥,使其对引擎间切换所需保存的相关数据与操作进行管理,以便在引擎切换回原来的模式时进行恢复,然后再从方法调用桥进入相应的引擎继续程序的执行,最终实现一个程序的不同方法可能在不同的引擎中执行。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110227049.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:分体落地式空调器的室内机
- 下一篇:流量自适应热水供暖换热机组