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编码等。此时如果常量池中的还有内容没有加载便进行常量池的清理就会出现错误。
IntoVPS是成立于2004年的Hosterion SRL旗下于2009年推出的无管理型VPS主机品牌,商家提供基于OpenStack构建的VPS产品,支持小时计费是他的一大特色,VPS可选数据中心包括美国弗里蒙特、达拉斯、英国伦敦、荷兰和罗马尼亚等6个地区机房。商家VPS主机基于KVM架构,最低每小时0.0075美元起($5/月)。下面列出几款VPS主机配置信息。CPU:1core内存:2GB...
LOCVPS发来了新的洛杉矶CN2线路主机上线通知,基于KVM架构,目前可与香港云地、香港邦联机房XEN架构主机一起适用7折优惠码,优惠后最低美国洛杉矶CN2线路KVM架构2GB内存套餐月付38.5元起。LOCPVS是一家成立较早的国人VPS服务商,目前提供洛杉矶MC、洛杉矶C3、和香港邦联、香港沙田电信、香港大埔、日本东京、日本大阪、新加坡、德国和荷兰等机房VPS主机,基于KVM或者XEN架构。...
专心做抗投诉服务器的VirtVPS上线瑞士机房,看中的就是瑞士对隐私的保护,有需要欧洲抗投诉VPS的朋友不要错过了。VirtVPS这次上新的瑞士服务器采用E-2276G处理器,Windows/Linux操作系统可选。VirtVPS成立于2018年,主营荷兰、芬兰、德国、英国机房的离岸虚拟主机托管、VPS、独立服务器、游戏服务器和外汇服务器业务。VirtVPS 提供世界上最全面的安全、完全受保护和私...