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编码等。此时如果常量池中的还有内容没有加载便进行常量池的清理就会出现错误。
关于CYUN商家在之前有介绍过一次,CYUN是香港蓝米数据有限公司旗下的云计算服务品牌,和蓝米云、蓝米主机等同属该公司。商家主要是为个人开发者用户、中小型、大型企业用户提供一站式核心网络云端部署服务,促使用户云端部署化简为零,轻松快捷运用云计算。目前,CYUN主要运营美国、香港、台湾、日本、韩国CN2线路产品,包括云服务器、站群服务器和独立服务器等。这次看到CYUN夏季优惠活动发布了,依然是熟悉的...
阿里云(aliyun)在这个月又推出了一个金秋上云季活动,到9月30日前,每天两场秒杀活动,包括轻量应用服务器、云服务器、云数据库、短信包、存储包、CDN流量包等等产品,其中Aliyun轻量云服务器最低60元/年起,还可以99元续费3次!活动针对新用户和没有购买过他们的产品的老用户均可参与,每人限购1件。关于阿里云不用多说了,国内首屈一指的云服务器商家,无论建站还是学习都是相当靠谱的。活动地址:h...
JUSTG,这个主机商第二个接触到,之前是有介绍到有提供俄罗斯CN2 GIA VPS主机活动的,商家成立时间不久看信息是2020年,公司隶属于一家叫AFRICA CLOUD LIMITED的公司,提供的产品为基于KVM架构VPS主机,数据中心在非洲(南非)、俄罗斯(莫斯科),国内访问双向CN2,线路质量不错。有很多服务商实际上都是国人背景的,有的用英文、繁体搭建的冒充老外,这个服务商不清楚是不是真...