JVM学习之编译与类加载

本文详细探讨了JVM的编译过程,包括Javac的编译期优化和JIT的运行期优化。内容涵盖词法分析、注解处理、字节码生成以及JIT的公共子表达式消除、方法内联等优化策略。同时,文章阐述了Java类加载的五个阶段,如加载、验证、准备、解析和初始化,强调了双亲委派机制的重要性,确保类加载的安全性和唯一性。
摘要由CSDN通过智能技术生成

Java文件通过Javac编译器编译成class文件,编译后的class文件交由JVM平台加载运行,即Java需要经过编译期和运行期

编译期优化指的是Javac编译器将Java文件转化为字节码即class文件的优化过程;
运行期优化指的是JIT编译器将热点代码编译成与平台相关的机器码,并进行多层次的优化,可以理解为对多个指令操作后得到同一结果合并为单个指令操作或者无用指令去除等;

编译过程(Java文件转化为class文件的过程)
1.解析与填充符号表过程:1)词法,语法分析2)填充符号表
2.插入式注解处理器的注解处理过程(jdk5之后提供对注解的支持新增操作)
3.分析与字节码生成过程1)标注检查 2)数据及控制流分析 3)解语法糖 4)字节码生成

语法糖包含条件编译、断言、Switch语句与枚举及字符串结合、可变参数、自动装箱/拆箱、枚举、内部类、泛型擦除、增强for循环、try-with-resources语句等等。
解语法糖的例子:字符串的拼接实际上调用的是StringBuider类的append方法

JIT编译器优化
公共子表达式消除(不进行重复计算,保存原先计算的值)
数组边界检查消除
方法内联(方法调用需要压栈出栈,将方法设置为具体的表达式可减少方法的压栈出栈)
逃逸分析和栈上分配(分析变量的内存情况,没发生逃逸(不能共享)分配在栈上

Java类加载五个过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值