类编译解释执行过程
- 编译:将.java文件编译为.class文件(字节码文件)其中详细过程如下
源代码文件*.java -> 词法分析器 -> tokens流 -> 语法分析器 -> 语法树/抽象语法树 -> 语义分析器 -> 注解抽象语法树 -> 字节码生成器 -> JVM字节码文件*.class
- 加载:加载即将.class类文件加载到内存中,存放细节见下。
- 连接
- 解释执行
类加载过程
当我们运行该文件时,Java虚拟机就通过类加载器(类加载器本质就是一段程序)把“.class”文件加载到内存,在方法区形成该类各方法的代码段和描述该类细节信息的常量池,同时在堆区形成一个表示该类的Class对象(一个java.lang.Class类的实例)。Class对象中存储了指向了该类所有属性和方法的详细信息的指针(同时,还存储了指向该类的父类的Class对象的指针)。我们能够通过Class对象直接创建该类的实例,并调用该类的所有方法,这就是我们所说的反射。