[发明专利]一种Java虚拟机中位置无关代码的缓存与复用方法有效

专利信息
申请号: 201210260280.0 申请日: 2012-07-26
公开(公告)号: CN102830965A 公开(公告)日: 2012-12-19
发明(设计)人: 杨珉;张源;周波 申请(专利权)人: 复旦大学
主分类号: G06F9/44 分类号: G06F9/44;G06F9/455;G06F17/30
代理公司: 上海正旦专利代理有限公司 31200 代理人: 陆飞;盛志范
地址: 200433 *** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明属于Java虚拟机设计技术领域,具体涉及即时编译器生成的位置无关代码的缓存与复用管理。本发明设计了一种高效的位置无关代码管理方法,并在Android操作系统内置虚拟机Dalvik上将其实现。本发明为位置无关代码设计了良好的缓存文件格式和缓存文件组织方式,并设计了高效的复用检测与加载策略。使用该管理方法可使虚拟机编译器生成的位置无关代码被高效地复用,从而提升虚拟机的执行效率。
搜索关键词: 一种 java 虚拟机 位置 无关 代码 缓存 方法
【主权项】:
一种Java虚拟机中位置无关代码缓存与复用方法,其特征在于分为两大部分:可执行代码缓存方法与缓存文件复用方法,其中:第一部分,可执行代码的缓存方法, 包括:缓存文件的布局方式、缓存文件的组织策略和位置无关代码缓存;所述的缓存文件布局,缓存文件由文件头部和文件内容两部分组成;所述文件头部包括标识该文件类型的魔数,除魔数外剩余文件内容的校验和、该文件的总大小、常量池空间大小、代码区大小以及异常信息表的大小,这些信息用于在加载代码前检查文件的完整性并指导内存分配器为即将加载的代码分配空间;所述文件内容包含代码使用的常量池、可执行代码本身以及异常信息表;所述的缓存文件组织策略,使用目录管理缓存文件,每一个Java类对应一个目录,该Java类中的所有方法对应为该目录中的一个文件,该文件中保存该Java方法的代码缓存;目录名根据Java类的唯一标识进行命名,文件名根据每个Java方法在类中的索引号进行唯一的标识和识别;所述位置无关代码缓存,以缓存文件布局及其组织方式为基础,根据Java虚拟机中即时编译器的翻译结果将生成的二进制代码保存到缓存中去;具体过程为:在即时编译器生成好位置无关的二进制代码后计算代码的校验和、准备该方法的元信息,然后按照上面所述的缓存文件组织策略和布局存入缓存中; 第二部分,缓存文件的复用方法,分为两阶段:缓存文件的存在性检测阶段与缓存文件加载阶段;前者负责检测被调用方法是否存在缓存的代码,并检测代码的合法性;后者负责在合适时机加载缓存文件并执行加载的代码;所述缓存文件的状态在两个阶段间进行相互通信:先检测是否存在代码的缓存版本,并更新检测结果至方法的标志位;然后按所设计的方法的缓存状态变换规则与变换条件进行复用:虚拟机启动时,每个方法都被指定为初始状态——UNCHECKED,表示未知存在缓存与否;CACHED,表示该方法已经过缓存检测,且存在可复用的代码缓存版本,缓存加载操作可以在恰当的时机加载该方法的缓存代码;NOCACHE,表示该方法已经被检测过,但目前不存在可复用的代码缓存文件;每一个方法初始都为UNCHECKED状态,在执行到该方法时进行缓存检测,如果没有检测该方法则改变为NOCACHE状态,若缓存文件已存在则改变为CACHED状态,方法的二进制代码在失效或者卸载的时候又会改变为NOCACHE状态。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

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

本文链接:http://www.vipzhuanli.com/patent/201210260280.0/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

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

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

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

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

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

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

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

钻瓜专利网在线咨询

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

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