[发明专利]基于软件Cache的Dalvik虚拟机JIT加速方法在审

专利信息
申请号: 201310014291.5 申请日: 2013-01-15
公开(公告)号: CN103092618A 公开(公告)日: 2013-05-08
发明(设计)人: 刘波;凌明;程林;周晓;付卓;武建平 申请(专利权)人: 东南大学
主分类号: G06F9/44 分类号: G06F9/44;G06F9/455
代理公司: 南京苏高专利商标事务所(普通合伙) 32204 代理人: 柏尚春
地址: 210096 *** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 软件 cache dalvik 虚拟机 jit 加速 方法
【说明书】:

技术领域

发明涉及Android系统优化技术领域,特别是涉及一种基于软件Cache的Dalvik虚拟机JIT加速方法。 

背景技术

移动设备的硬件资源非常有限,这对标准Java虚拟机提出了很大的挑战。比如,标准Java虚拟机使用Class格式文件作为其执行文件,但每个Class文件都对应着一个类型的定义信息及一个独立的常量池,且每个Class文件之间会有很多冗余信息,这对内存资源有限的移动设备来说无疑是一个灾难。Android系统使用Dalvik虚拟机,来运行Java应用程序。Android系统中的Dalvik虚拟机针对内存资源有限等问题,提出了一系列优化措施。Java应用程序被转换成紧凑的Dex格式,Dex格式是专为Dalvik虚拟机设计的一种格式,适合内存和处理器速度有限的系统。根据Gabor Paller的研究表明,Dex可执行文件格式确实大大的减少了Java程序的尺寸。同时由于Dalvik虚拟机是基于寄存器架构的,所以执行效率更高,字节码的验证速度更快且容错能力更强。因此Dalvik虚拟机相对于Java虚拟机占用的资源更少、运行效率更高。 

Android系统运行环境包括两部分:核心库和Dalvik虚拟机。Dalvik虚拟机主要是完成对象生命周期的管理,堆栈的管理,线程管理,安全和异常的管理,以及垃圾回收等重要功能。Dalvik虚拟机由类加载器、执行引擎、运行时数据区和本地方法等重要的模块组成。每一个Android应用都运行了一个Dalvik虚拟机实例,而每一个虚拟机实例都有一个独立的进程空间。Dalvik虚拟机利用类加载器,对Dex字节码文件进行装载,利用垃圾回收进行内存和对象的管理,利用解释系统对装载进入的Dex字节码进行逐条的解释执行,利用即时编译系统对字节码进行本地编译。 

即时编译技术(Just-in-time Compilation,简称JIT),是一种运行时的动态编译技术。每启动一个应用程序,都会相应地启动一个Dalvik虚拟机实例,启动时会启动编译线程。应用程序的Java源代码经过编译和Dex工具处理以后形成Dex字节码文件,虚拟机运行时会将相应的Dex字节码装载进内存,然后利用Dalvik解释系统对Dex字节码逐条进行解释。 

首先,分析Davlik虚拟机内部的工作机制。图1所示为Davlik虚拟机内部功能模块结构图。类加载器实现的功能是:把需要执行的字节码加载到内存中,并且把字节码中所依赖的Java库中的字节码文件加载到内存中。运行时数据区:对程序中的数据进行统一的管理。执行引擎:对字节码文件进行执行,包括解释系统与编译器两部分。本地方法库与本地方法接口:支持在Java程序中,调用本地库中的函数。 

其次,执行Java程序的主要过程是:通过Java工具把Java程序编译为*.class文件,然后通过Dalvik虚拟机中的dx工具把*.class文件转换为.dex文件,并与资源文件一起打包生成*.apk文件。在执行*.apk文件时,Dalvik虚拟机通过类加载器,把字节码加载到内存中,通过执行引擎执行字节码。 

执行引擎包括解释系统与即时编译系统两部分,它们之间协同工作,具体的执行过程如图3和图4所示。在执行字节码时,首先进入的是解释系统。在解释系统中,对每一条字节码进行解释执行。解释系统在执行特定字节码时,会对此时的字节码地址值的运行次数进行统计,具体算法是:系统中存在阈值哈希表。通过对字节码地址应用简单快速哈希算法,得到阈值哈希表的索引值,从而取出字节码地址对应的执行次数统计值,进行减一的操作。当一个确定地址的字节码执行次数为零时,以这个字节码地址开始的一段字节码被认为是热点字节码。这时,解释系统会进行一个复杂耗时哈希操作,在本地代码哈希表中,查找当前字节码地址是否已经有对应的本地代码。如果有,则直接执行本地代码。如果没有,解释系统把这段字节码进行打包,并且唤醒编译线程,编译线程得到解释系统打包的数据,进行相应的编译工作,把这段字节码,编译为本地代码,并且添加到本地代码哈希表中。在编译线程编译字节码的同时,解释系统继续进行执行字节码的工作。 

解释系统进行复杂哈希算法查找热点字节码地址对应的本地代码,这一操作比较耗时。由于本地代码哈希表为了解决哈希冲突,采用了开放定址法。由于查找本地代码非常耗时,这样便消耗了一部分由执行本地代码所带来的性能提升。 

发明内容

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东南大学,未经东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201310014291.5/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top