加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 空间 > 正文

程序员从宏观、微观角度浅析JVM虚拟机!

发布时间:2019-03-19 23:52:34 所属栏目:空间 来源:架构月亮姨
导读:1.问题 JAVA文本文件如何被翻译成CLASS二进制文件? 如何理解CLASS文件的组成结构? 虚拟机如何加载使用类文件的生命周期? 虚拟机系列诊断工具如何使用? 虚拟机内存淘汰机制? 虚拟机指令集架构? 2.关键词 编译,魔数,常量池,字面量,数据表,堆栈,方法区

7.3内存收集器

  • serial收集器:单线程,主要用于client模式
  • ParNew收集器:多线程版的serial,主要用于server模式
  • Parallel Scavenge收集器:线程可控吞吐量(用户代码时间/用户代码时间+垃圾收集时间),自动调节吞吐量,用户新生代内存区
  • Serial Old收集器:老年版本serial
  • Parallel Old收集器:老年版本Parallel Scavenge
  • CMS(Concurrent Mark Sweep)收集器:停顿时间短,并发收集
  • G1收集器:分块标记整理,不产生碎片

8.虚拟机指令集架构(执行引擎)

8.1虚拟机字节码执行引擎

运行时栈帧结构

每个方法调用开始到执行完成的过程,对应这一个栈帧在虚拟机栈里面从入栈到出栈的过程。

  • 栈帧包含:局部变量表,操作数栈,动态连接,方法返回
  • 方法调用

方法调用不等于方法执行,而且确定调用方法的版本。

  • 方法调用字节码指令:invokestatic,invokespecial,invokevirtual,invokeinterface
  • 静态分派:静态类型,实际类型,编译器重载时通过参数的静态类型来确定方法的版本。(选方法)
  • 动态分派:invokevirtual指令把类方法符号引用解析到不同直接引用上,来确定栈顶的实际对象(选对象)
  • 单分派:静态多分派,相同指令有多个方法版本。
  • 多分派:动态单分派,方法接受者只能确定唯一一个。

基于栈的字节码解释

解释执行:

基于栈指令集与基于寄存器的指令集:

基于本地解释器执行过程

类加载 执行子系统案例

tomcat类加载,OSGI热插拔,字节码生成技术,动态代理,Retrotranslator

9.虚拟机实现机制进化过程

程序编译与代码优化

早期编译(编译期)

  • javac编译器:解析与符号表填充,注解处理,生成字节码
  • java语法糖:语法糖有助于代码开发,但是编译后就会解开糖衣,还原到基础语法的class二进制文件

重载要求方法具备不同的特征签名(不包括返回值),但是class文件中,只要描述不是完全一致的方法就可以共存,如:

  1. public String foo(List<String> arg){ 
  2.  final int var = 0; 
  3.  return ""; 
  4. public int foo(List<Integer> arg){ 
  5.  int var = 0; 
  6.  return 0; 

晚期编译(运行期)

  • HotSpot虚拟机内的即时编译
  1. 解析模式 -Xint 
  2. 编译模式 -Xcomp 
  3. 混合模式 Mixed mode 
  4. 分层编译:解释执行 -> C1(Client Compiler)编译 -> C2编译(Server Compiler) 
  5. 触发条件:基于采样的热点探测,基于计数器的热点探测 

10.总结

由于JVM涉及内容较深且广,篇幅有限无法深入分析细节。本文从微观方面分析了作为原材料的CLASS文件的结构,又从宏观方面阐述了JVM是如何消化每一个进入的CLASS。JVM自定义了一套逻辑上的指令集,这也呼应了之前我们介绍的计算机如何运行一文,现代计算机性能有了长足的发展,但是本质上还是完备的诺依曼体系架构。随着量子计算的突飞猛进,相信未来的计算模型也会有革命性的突破。

【编辑推荐】

  1. 如何合理的规划JVM性能调优
  2. 深入进阶:图解分析JVM内存堆布局
  3. Java虚拟机如何加载类的?
  4. 核心基础:理解何为JVM?掌握Java虚拟机构成精髓
  5. JVM 理解其实并不难!
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读