HotSpot虚拟机类加载及优化的原理与实现
摘要本文通过对HosSpot虚拟机类加载工作原理的分析结合HotSpot的源代码研究了类加载的具体细节着重分析了类加载的过程及类在虚拟机中的运行细节应用热点探测的原理达到虚拟机优化的目标。
关键字热点探测虚拟机类优化类加载
1引言
即时编译器编译性能的好坏及代码优化程度的高低作为衡量商用j ava虚拟机的关键技术指标 同时也是虚拟机技术水平的最好体现。 由于j ava虚拟机规范知识规定了字节码指令的动作但并没有规定虚拟机的实现方式。执行引擎的核心动作就是不停读取字节码解释编译执行直到虚拟机进程的退出为止。Sun HotSpot虚拟机执行引擎为解释器与编译器共存的架构方式 内部的编译器是即时编译器主要由Client Compiler和Server Compiler构成解释器与其中的一种构成混合模式的虚拟机执行引擎。
HotSpot的执行引擎采用解释器和即时编译器共存的架构对于一般的代码采用解释器每次读取字节码指令将指令解释乘本地代码并予以执行。这样机制能够有效节约内存减少编译时间让代码更加快速的进入执行状态但是存在代码执行效率低的缺点。即时编译器采用热点代码侦测技术实时把热点代码编译成本地代码调用的时候优先使用本地编译过的代码可以大大提高虚拟机的运行速度。另外不同的编译器还能有效实现局部或全局的代码的优化有效提高字节码的解释效率节约程序的调用时间。
2 HotSpot中的JIT的实现原理
从java虚拟机角度观察 hotspot中类的加载分两种情况一种是启动类加载器的加载器 由CPP代码实现另外一种就是加载其他类的加载器。 以下代码分析的都是在目录 /ope nj dk/hotspo t/s rc/s hare/vm下 以下出现的目录都位于该目录之下。 由于最开始java环境还没有通过CPP代码构建编译的环境
首先 ho tspo t启动时根据运行环境的不同决定使用的寄存器、指令集及缓存大小等判断C P U架构类型在sp arc、 x86、 x86-64或ar m等结构中选择根据架构的不同加载不同的文件。
然后进行加载过程的第一步—验证
1格式的验证主要验证文件的魔数是否正确、主次版本号是否合理、常量池中的常量内类是否合法、常量的索引是否符合、结构是否符合UTF 8编码等。此时如果常量池中的还有内容没有加载便进行常量池的清理就会出现错误。
PacificRack在本月发布了几款特价产品,其中最低款支持月付仅1.5美元,基于KVM架构,洛杉矶机房,PR-M系列。PacificRack简称PR,QN机房旗下站点,主要提供低价VPS主机产品,基于KVM架构,数据中心为自营洛杉矶机房,现在只有PR-M一个系列,分为了2个类别:常规(Elastic Compute Service)和多IP产品(Multi IP Server)。下面列出几款秒...
博鳌云是一家以海外互联网基础业务为主的高新技术企业,运营全球高品质数据中心业务。自2008年开始为用户提供服务,距今11年,在国人商家中来说非常老牌。致力于为中国用户提供域名注册(国外接口)、免费虚拟主机、香港虚拟主机、VPS云主机和香港、台湾、马来西亚等地服务器租用服务,各类网络应用解決方案等领域的专业网络数据服务。商家支持支付宝、微信、银行转账等付款方式。目前香港有一款特价独立服务器正在促销,...
pacificrack又追加了3款特价便宜vps搞促销,而且是直接7折优惠(一次性),低至年付7.2美元。这是本月第3波便宜vps了。熟悉pacificrack的知道机房是QN的洛杉矶,接入1Gbps带宽,KVM虚拟,纯SSD RAID10,自带一个IPv4。官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款7折秒杀优惠码:R3UWUYF01T内存CPUSS...