【技术实现步骤摘要】
本专利技术属于Java虚拟机
,具体涉及位置无关代码的缓存与复用方法。
技术介绍
Java虚拟机作为一种重要的运行时系统,因易于扩展、便于跟踪程序执行和程序移植等优点而被广泛研究。近年来,借助即时编译、并行执行等方法,桌面平台与服务器平台的虚拟机执行效率获得了很大提升。即时编译技术借助动态剖析信息,使虚拟机只关注热方法,缩小了编译器的编译范围,从整体上降低了编译时间开销,减少了编译生成的代码所需存储空间,因此被广泛应用于个人电脑平台、服务器平台甚至嵌入式平台。然而,即时编译系统也给程度执行带来额外开销,如检测延时和编译延时。可执行代码缓存复用是一项重要的降低检测和编译延时的技术。该技术的核心是 针对虚拟机生成的可执行位置无关代码的设计和位置无关代码的缓存与复用管理。代码缓存即将编译生成的可执行代码以文件形式,按一定的格式存储至次级存储设备,如硬盘、闪存等。缓存代码至文件的目的是使其他程序或该程序在之后的运行过程中可以复用功能相同的部分或全部代码。代码缓存复用技术的典型的应用是Unix或Linux操作系统的共享库。共享库中的函数只有一份物理拷贝,但可被不同的 ...
【技术保护点】
一种Java虚拟机中位置无关代码缓存与复用方法,其特征在于分为两大部分:可执行代码缓存方法与缓存文件复用方法,其中:第一部分,可执行代码的缓存方法,?包括:缓存文件的布局方式、缓存文件的组织策略和位置无关代码缓存;所述的缓存文件布局,缓存文件由文件头部和文件内容两部分组成;所述文件头部包括标识该文件类型的魔数,除魔数外剩余文件内容的校验和、该文件的总大小、常量池空间大小、代码区大小以及异常信息表的大小,这些信息用于在加载代码前检查文件的完整性并指导内存分配器为即将加载的代码分配空间;所述文件内容包含代码使用的常量池、可执行代码本身以及异常信息表;所述的缓存文件组织策略,使用 ...
【技术特征摘要】
1.一种Java虚拟机中位置无关代码缓存与复用方法,其特征在于分为两大部分可执行代码缓存方法与缓存文件复用方法,其中 第一部分,可执行代码的缓存方法,包括缓存文件的布局方式、缓存文件的组织策略和位置无关代码缓存; 所述的缓存文件布局,缓存文件由文件头部和文件内容两部分组成;所述文件头部包括标识该文件类型的魔数,除魔数外剩余文件内容的校验和、该文件的总大小、常量池空间大小、代码区大小以及异常信息表的大小,这些信息用于在加载代码前检查文件的完整性并指导内存分配器为即将加载的代码分配空间;所述文件内容包含代码使用的常量池、可执行代码本身以及异常信息表; 所述的缓存文件组织策略,使用目录管理缓存文件,每一个Java类对应一个目录,该Java类中的所有方法对应为该目录中的一个文件,该文件中保存该Java方法的代码缓存;目录名根据Java类的唯一标识进行命名,文件名根据每个Java方法在类中的索引号进行唯一的标识和识别; 所述位置无关代码缓存,以缓存文件布局及其组织方式为基础,根据Java虚拟机中即时编译器的翻译结果将生成的二进制代码保存到缓存中去;具体过程为在即时编译器生成好位置无关的二进制代码后计算代码的校验和、准备该方法的元信息,然后按照上面所述的缓存文件组织策略和布局存入缓存中; 第二部分,缓存文件的复用方法,分为两阶段缓存文件的存在性检测阶段与缓存文件加载阶段;前者负责检测被调用方法是否存在缓存的代码,并检测代码的合法性;后者负责在合适时机加载缓存文件并执行加载的代码; 所述缓存文件的状态在两个阶段间进行相互通信先检测是否存在代码的缓存版本,并更新检测结果至方法的标志位;然后按所设计的方法的缓存状态变换规则与变换条件进行复用虚拟机启动时,每个方法都被指定为初始状态——UNCHECKED,表示未知存在缓存与否;CAC...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。