1. Java执行全流程
2024-03-18 23:07:07 1 举报
AI智能生成
分析Java执行全流程
作者其他创作
大纲/内容
编写代码
java源代码,保存为.java文件
编译代码
前端编译
java
scala
grovvy
. . .
运行程序
执行java命令
JVM启动
创建类加载器
加载主类
执行main方法
类加载
加载
类加载器读取.class字节码文件
链接
验证
校验类信息符合JVM规范
准备
为类的静态变量分配内存,并将其初始化为默认值
解析
将 .class 文件中的符号引用转换成直接引用
初始化
静态变量显式初始化
静态代码块执行
执行字节码
解释执行
通过解释器读取字节码,一次一条地将其转换成机器码。不需要等待整个程序编译完成,可以迅速开始执行
优点:立即开始,无需等待。
缺点:效率较低,因为每次读都要重新查找和翻译
缺点:效率较低,因为每次读都要重新查找和翻译
编译执行
JIT编译执行会在程序运行的某个时刻,针对热点代码进行编译,从而提高程序的执行效率。
优点:长期来看,执行效率高。
缺点:需要一定的时间来“编译”代码,所以启动速度可能会慢一些
缺点:需要一定的时间来“编译”代码,所以启动速度可能会慢一些
热点探测
方法调用计数器
回边计数器:统计方法中循环体代码执行的次数
编译优化技术
方法内联:把目标方法的代码复制到发起调用的方法之中,避免发生真实的方法调用。这样就可以减少频繁创建栈帧的性能开销
逃逸分析:当一个对象在方法里面被定义后,它可能被外部方法所引用
标量替换
栈上分配
锁消除
程序结束
当main方法执行完成后,程序结束
程序运行结束后,JVM实例也会随之终止,操作系统会回收分配给JVM的所有资源
0 条评论
下一页