[发明专利]一种基于Dalvik虚拟机JNI机制中接口函数性能优化方法有效

专利信息
申请号: 201410177666.4 申请日: 2014-04-29
公开(公告)号: CN104035809B 公开(公告)日: 2017-11-17
发明(设计)人: 吴艳霞;张国印;谢东良;许圣明;王彦彰 申请(专利权)人: 哈尔滨工程大学
主分类号: G06F9/455 分类号: G06F9/455
代理公司: 暂无信息 代理人: 暂无信息
地址: 150001 黑龙江省哈尔滨市南岗区*** 国省代码: 黑龙江;23
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 dalvik 虚拟机 jni 机制 接口 函数 性能 优化 方法
【说明书】:

技术领域

发明涉及一种基于Dalvik虚拟机JNI机制中接口函数GetMethodID和GetStaticMethodID性能优化方法。

背景技术

Android是由Google公司基于移动设备而开发的嵌入式系统,具有优良的性能表现以及较低的硬件配置需求,因此迅速成为目前移动终端之上的主流操作系统。这种优势的体现主要得益于Google对作为Android系统基石的Dalvik虚拟机所做出的大量优化。实际上,Dalvik虚拟机并不是一个标准的Java虚拟机,因为它并不符合标准Java虚拟机设计规范。Dalvik虚拟机是一个针对嵌入式系统中低速CPU和内存受限的等特点,经过专门设计优化而实现的Java语言虚拟机。

JNI机制的英文全称为Java Native Interface,是SUN公司所定义的一套编程框架标准接口,用于实现Java代码和本地代码互相调用的需求。本地代码是指那些使用Java语言之外的编程语言编写的代码,与本地硬件平台相关。在Android系统中,由Dalvik虚拟机实现了这套接口,供Dalvik虚拟机的Java应用与本地代码实现互相调用,使Java应用的执行效率得到了很大提高。

即便如此,在使用本地调用机制编写应用程序的时候,除了本地代码执行的高效性带来的优点之外,Dalvik虚拟机在Java代码和本地代码互相调用过程中也付出了额外的开销。尤其是当本地函数需要多次访问Java类中的同一个函数时,每次调用JNI接口函数都会执行同样的查找工作以获得对应的MethodID数据。事实上,这些重复的冗余操作是可以避免的。

发明内容

本发明的目的在于提供一种提高Dalvik虚拟机整体性能的基于Dalvik虚拟机JNI机制中接口函数GetMethodID和GetStaticMethodID性能优化方法。

本发明的目的是这样实现的:

(1)在目标接口函数的适当位置植入数据索引机制;

(2)获取目标数据的标识常量并调用哈希函数计算标识常量的哈希值;

(3)根据哈希值在内建哈希表查找目标表项,如存在则直接返回目标数据地址,否则实施步骤(4);

(4)根据目标数据常量标识,调用原系统函数查找目标数据,如找到则将目标数据以及其标识常量的哈希值插入内建哈希表中并正确返回;否则抛出异常并返回。

步骤(1)中目标接口函数适当位置是指:对于GetMethodID函数,适当位置为GetMethodID函数调用dvmFindVirtualMethodHierByDescriptor函数对目标MethodID查找之前,在此处引入一个数据索引机制;对于GetStaticMethodID函数,适当位置为GetStaticMethodID函数调用dvmFindDirectMethodHierByDescriptor函数对目标MethodID查找之前。

步骤(2)中目标数据的标识常量是指目标方法所属类的描述符、目标方法名以及签名数据;其中计算标识常量的哈希值是指,调用Dalvik虚拟机提供的哈希函数计算目标数据标识常量字符串哈希值。

步骤(3)中内建哈希表是指,一个哈希表数据结构HashTable,每一个哈希单元包括三个成员变量,分别用于存储标识常量的哈希值、标识常量的字符拼接以及目标方法的MethodID。

步骤(3)中根据该哈希值在内建哈希表查找目标表项是指,根据步骤21)中生成的哈希值在内建哈希表中查找匹配目标表项并返回目标方法的MethodID。

步骤(4)中根据目标数据常量标识,调用原系统函数查找目标数据是指,当步骤(3)的返回值为空时,接口函数将会调用原系统函数并根据目标数据常量标识查找目标方法的MethodID,其中对于接口函数GetMethodID,原系统函数为dvmFindVirtualMethodHierByDescriptor函数;对于接口与函数GetStaticMethodID,原系统函数为dvmFindDirectMethodHierByDescriptor函数。

步骤(4)将目标数据以及其标识常量的哈希值插入内建哈希表是指,当步骤(3)返回值为空时,接口函数GetMethodID或GetStaticMethodID通过原系统函数查找到目标方法的MethodID数据后,将MethodID数据和与之对应的常量标识以及常量标识的哈希值插入内建哈希表中。

发明的有益效果在于:

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

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

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

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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