Java代码编译和执行的过程
2019-07-18 18:24:51 82 举报
AI智能生成
JAVA代码编译和执行的过程
作者其他创作
大纲/内容
Java源代码编译
指令将Java源代码解析成JVM能够理解的字节码
由以下三个过程组成
分析和输入到符号表
注解处理
语义分析和生成 class 文件
生成的.clsss文件包含以下内容
结构信息。包括 class 文件格式版本号及各部分的数量与大小的信息。
元数据。对应于 Java 源码中声明与常量的信息。包含类/继承的超类/实现的接口的声明信息、域与方法声明信息和常量池。
方法信息。对应 Java 源码中语句和表达式对应的信息。包含字节码、异常处理器表、求值栈与局部变量区大小、求值栈的类型记录、调试符号信息。
Java类加载&执行class字节码
JVM 的类加载通过 ClassLoader 及其子类来完成
类加载器种类
启动类加载器
拓展类加载器
应用程序类加载器
自定义类加载器
双亲委派模型
类加载器在接收到类加载请求时,不会自己处理,而是先将类加载请求交给他的父级,依次到启动类加载器,如果启动类加载器能够找到则直接返回,否则再依次往下查找,其实无论哪种类加载器执行最后都会在启动类加载器中查找一遍
Java类加载机制
加载
验证
JVM规范校验
代码逻辑校验
准备
内存分配的对象
初始化的类型
final修饰的常量则直接赋予用户所希望的值
初始化为该类型的零值(0,null)
解析
初始化
使用
卸载
Java类执行
确定类变量的初始值
初始化入口方法
初始化类构造器
初始化对象构造器
如果在初始化 main 方法所在类的时候遇到了其他类的初始化,那么就先加载对应的类,加载完成之后返回。如此反复循环,最终返回 main 方法所在类。
0 条评论
下一页