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编码等。此时如果常量池中的还有内容没有加载便进行常量池的清理就会出现错误。
今天中午的时候看到群里网友在讨论新版本的Apache HTTP Server 2.4.51发布且建议更新升级,如果有服务器在使用较早版本的话可能需要升级安全,这次的版本中涉及到安全漏洞的问题。Apache HTTP 中2.4.50的修复补丁CVE-2021-41773 修复不完整,导致新的漏洞CVE-2021-42013。攻击者可以使用由类似别名的指令配置将URL映射到目录外的文件的遍历攻击。这里...
7月4日是美国独立日,大致就是国庆节的意思吧。hostodo今年提前搞了个VPS大促销活动,4款便宜VPS,相当于7折,续费不涨价,本次促销不定时,不知道有多少货,卖完为止。VPS基于KVM虚拟,NVMe阵列,1Gbps带宽,自带一个IPv4+/64 IPv6,solusvm管理,送收费版DirectAdmin授权,VPS在用就有效! 官方网站:https://www.hostodo.com ...
华纳云(HNCloud Limited)是一家专业的全球数据中心基础服务提供商,总部在香港,隶属于香港联合通讯国际有限公司,拥有香港政府颁发的商业登记证明,保证用户的安全性和合规性。 华纳云是APNIC 和 ARIN 会员单位。主要提供香港和美国机房的VPS云服务器和独立服务器。商家支持支付宝、网银、Paypal付款。华纳云主要面向国内用户群,所以线路质量还是不错的,客户使用体验总体反响还是比较好...