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