jvm前奏篇

javac编译原理 源文件----->类文件java

  词法分析------>语法分析------>语义分析----字节码生成器------.class 文件spa

javap  反编译3d

之因此能处处运行就是 由于 class文件   就是 经过 javaformat  规范code

java 类加载机制:orm

类文件要运行在JVM中,装载、连接、初始化对象

 

 装载:blog

① 就是查找和导入class 文件 将类文件转换为 二进制流  ClassLoader 类加载,不一样的类加载器,加载不一样区域的class文件内存

② 讲二进制流的静态结构,转换到 运行时数据区的某一块区域【方法区】io

 

 同名的类 由上层去加载,这种模式叫作 双亲委派模型  (由父亲去加载,父亲加载到了 本身就不去加载了) 若是想打破这种规律,就是 重写 classLoader里面的 findClass方法  此处须要作实验 破坏双亲委派模型编译

双亲委派模型很好地解决了各个类加载器的基础类统一问题(越是基础的类越由上层加载器加载),基础类被其余的对象锁调用,可是若是基础类须要加载调回其余用户的代码的时候模型便会被破坏。

双亲委派模型工做过程是:若是一个类加载器收到类加载的请求,它首先不会本身去尝试加载这个类,而是把这个请求委派给父类加载器完成。每一个类加载器都是如此,只有当父加载器在本身的搜索范围内找不到指定的类时(即ClassNotFoundException),子加载器才会尝试本身去加载。

 

连接:

1、验证

      验证数据的有效性

2、准备

      为类的静态变量分配内存、初始化值 为默认值

3、解析

      把类中的符号引号转化为直接引用

初始化:

类的静态变量,赋值真正的值

相关文章
相关标签/搜索