[发明专利]一种Java虚拟机中位置无关代码的缓存与复用方法有效
申请号: | 201210260280.0 | 申请日: | 2012-07-26 |
公开(公告)号: | CN102830965A | 公开(公告)日: | 2012-12-19 |
发明(设计)人: | 杨珉;张源;周波 | 申请(专利权)人: | 复旦大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/455;G06F17/30 |
代理公司: | 上海正旦专利代理有限公司 31200 | 代理人: | 陆飞;盛志范 |
地址: | 200433 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 java 虚拟机 位置 无关 代码 缓存 方法 | ||
1. 一种Java虚拟机中位置无关代码缓存与复用方法,其特征在于分为两大部分:可执行代码缓存方法与缓存文件复用方法,其中:
第一部分,可执行代码的缓存方法, 包括:缓存文件的布局方式、缓存文件的组织策略和位置无关代码缓存;
所述的缓存文件布局,缓存文件由文件头部和文件内容两部分组成;所述文件头部包括标识该文件类型的魔数,除魔数外剩余文件内容的校验和、该文件的总大小、常量池空间大小、代码区大小以及异常信息表的大小,这些信息用于在加载代码前检查文件的完整性并指导内存分配器为即将加载的代码分配空间;所述文件内容包含代码使用的常量池、可执行代码本身以及异常信息表;
所述的缓存文件组织策略,使用目录管理缓存文件,每一个Java类对应一个目录,该Java类中的所有方法对应为该目录中的一个文件,该文件中保存该Java方法的代码缓存;目录名根据Java类的唯一标识进行命名,文件名根据每个Java方法在类中的索引号进行唯一的标识和识别;
所述位置无关代码缓存,以缓存文件布局及其组织方式为基础,根据Java虚拟机中即时编译器的翻译结果将生成的二进制代码保存到缓存中去;具体过程为:在即时编译器生成好位置无关的二进制代码后计算代码的校验和、准备该方法的元信息,然后按照上面所述的缓存文件组织策略和布局存入缓存中;
第二部分,缓存文件的复用方法,分为两阶段:缓存文件的存在性检测阶段与缓存文件加载阶段;前者负责检测被调用方法是否存在缓存的代码,并检测代码的合法性;后者负责在合适时机加载缓存文件并执行加载的代码;
所述缓存文件的状态在两个阶段间进行相互通信:先检测是否存在代码的缓存版本,并更新检测结果至方法的标志位;然后按所设计的方法的缓存状态变换规则与变换条件进行复用:虚拟机启动时,每个方法都被指定为初始状态——UNCHECKED,表示未知存在缓存与否;CACHED,表示该方法已经过缓存检测,且存在可复用的代码缓存版本,缓存加载操作可以在恰当的时机加载该方法的缓存代码;NOCACHE,表示该方法已经被检测过,但目前不存在可复用的代码缓存文件;每一个方法初始都为UNCHECKED状态,在执行到该方法时进行缓存检测,如果没有检测该方法则改变为NOCACHE状态,若缓存文件已存在则改变为CACHED状态,方法的二进制代码在失效或者卸载的时候又会改变为NOCACHE状态。
2. 根据权利要求1所述的Java虚拟机中位置无关代码缓存与复用方法,其特征在于:在缓存文件存在性检测阶段,采用缓存检测算法:(1)从方法的类文件获得类文件的标识信息;(2)用类文件标识信息和方法在类文件中方法表里的索引构造出缓存文件的全路径;(3)根据该缓存文件的全路径,使用文件系统库函数,检测所指向的文件是否存在,并依据返回的检测结果更新方法的缓存状态标志。
3. 根据权利要求2所述的Java虚拟机中位置无关代码缓存与复用方法,其特征在于:在缓存文件加载阶段,采用方法执行时期MET复用策略,即在方法执行前检查缓存状态,并依据缓存状态确定是否先加载再执行。
4. 根据权利要求3所述的Java虚拟机中位置无关代码缓存与复用方法,其特征在于:所述缓存文件复用方法的具体过程如下:首先采用解释执行的方式进入方法的执行,此时进行缓存文件的检测,如果缓存中存在该方法的缓存,则对缓存文件的合法性进行校验;如果通过校验则直接加载如内存直接执行二进制代码;如果校验存在问题,则使用即时编译器进行重新编译,将结果保存会缓存,同时直接执行二进制代码;如果在缓存中不存在该方法的记录,则仍然采用解释进行的方式进行执行,同时进行调用计数,当计数器超过一定的阈值之后,调用即时编译器进行方法的编译,并且根据前文描述的缓存文件的组织和布局方式对该方法的二进行代码进行缓存。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于复旦大学,未经复旦大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210260280.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:氢吸藏合金、氢吸藏合金电极及二次电池
- 下一篇:自动低倍侵蚀检测器