导图社区 Java编译到执行的过程
Java编译到执行的过程总结,包括编译、加载、解释、执行四个步骤,并对每个步骤的内容做了详细的解释说明。
社区模板帮助中心,点此进入>>
计算机操作系统思维导图
简单介绍MYSQL数据库软件的基本命令
计算机基础知识
.net学习总结
python基础知识点简单总结
序列类型的方法
管理信息系统
Python3.0入门知识思维导图
java 从入门到精通(第四版本)
软考架构设计师
Java编译到执行的过程
编译
将源文件编译成为JVM可解释的Class文件
加载
将编译后的Class文件加载到JVM中
解释
把字节码转换成为操作系统识别的指令
执行
操作系统把解释器解析出来的指令码,调用系统的硬件执行最终的程序指令。
即时编译器
解释编译阶段结束
非热点代码
热点代码
热点探测
方式1:计数器
HotSpot使用的计数器
方法调用计数器
回边计数器
两个计数器都有一个确定的阈值 当计数器超过阈值溢出 就会触发JIT编译
方式2:抽样
字节码解析器
初始化
总结:为类的静态变量赋予正确的初始值 过程大概是收集class的静态变量,静态代码块,静态方法 随后从上往下开始执行
连接
验证:验证类是否符合Java规范和JVM规范
准备:为类的静态变量分配内存,初始化为系统的初始值
解析:将符合引用转为直接引用的过程
装载
总结:查找并加载类的二进制数据 在JVM堆中创建一个java.lang.Class类的对象 并将类相关的信息存储在JVM方法区中
装载时机:不会一次性把所有的类全部装载到JVM 而是要等到 [ 有需要 ] 的时候才进行装载
装载发生:Class文件是通过 [类加载器] 装载到JVM中 为了防止出现多份相同的字节码,使用了双亲委派机制 不会自己去尝试加载,而是把请求委托给父类加载器 依次向上
装载规则:JDK本地方法类由根加载器装载 JDK内部实现的扩展类由扩展加载器实现装载 程序中的类文件则由系统加载器实现装载
字节码文件
注解处理
语义分析
语法分析