美文网首页
类加载-初始化

类加载-初始化

作者: zzj0990 | 来源:发表于2020-12-21 17:40 被阅读0次

1. 加载过程

     1. Loading

          1. 双亲委派,主要出于安全来考虑

          2. LazyLoading 五种情况

                1. –new getstatic putstatic invokestatic指令,访问final变量除外

                    –java.lang.reflect对类进行反射调用时

                   –初始化子类的时候,父类首先初始化

                  –虚拟机启动时,被执行的主类必须初始化

                  –动态语言支持java.lang.invoke.MethodHandle解析的结果为REF_getstatic REF_putstatic REF_invokestatic的方法句柄时,该类必须初始化

       3. ClassLoader的源码

           1. findInCache -> parent.loadClass -> findClass()

4. 自定义类加载器

   1. extends ClassLoader

   2. overwrite findClass() -> defineClass(byte[] -> Class clazz)

   3. 加密

   4. 遗留问题:parent是如何指定的,打破双亲委派,学生问题桌面图片

         1. 用super(parent)指定

         2. 双亲委派的打破

             1. 如何打破:重写loadClass()

             2. 何时打破过?

                 1. JDK1.2之前,自定义ClassLoader都必须重写loadClass()

                 2. ThreadContextClassLoader可以实现基础类调用实现类代码,通过thread.setContextClassLoader指定

                 3. 热启动,热部署

                     1. osgi tomcat 都有自己的模块指定classloader(可以加载同一类库的不同版本)

     5. 混合执行 编译执行 解释执行

         1. 检测热点代码:-XX:CompileThreshold = 10000

2. Linking

     1. Verification

         1. 验证文件是否符合JVM规定

     2. Preparation

         1. 静态成员变量赋默认值

     3. Resolution

         1. 将类、方法、属性等符号引用解析为直接引用

             常量池中的各种符号引用解析为指针、偏移量等内存地址的直接引用

3. Initializing

      1. 调用类初始化代码 ,给静态成员变量赋初始值

2. 小总结:

1. load - 默认值 - 初始值

2. new - 申请内存 - 默认值 - 初始值

相关文章

  • JVM类加载入门

    一 类加载顺序 class类加载-->验证-->准备--->解析--->初始化 class类加载:通过类加载器加载...

  • 类加载连接初始化阶段

    一、类的生命周期和加载阶段概述 类的生命周期 类的加载连接初始化过程 二、类的加载连接初始化详细过程  加载 使用...

  • 第五课、类的加载连接与初始化过程详解

    类的加载、连接与初始化过程详解 类的加载、连接与初始化 1、过程:加载-->连接(验证-->准备-->解析) --...

  • 反射

    类加载器:加载过程 加载,连接,初始化 分类: Bootstrap ClassLoader 根类加载器:核心类的加...

  • 类加载

    一、类加载器 二、类加载过程 加载 连接 验证 准备 解析 初始化

  • Java虚拟机(三)—类加载

    类加载时机 生命周期 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载 类初始化的四...

  • 反射,注解,动态代理

    类加载机制 当调用某个类时,系统会通过加载,连接,初始化三个步骤来对该类进行初始化操作。 加载 加载是指将类的字节...

  • 类加载机制

    目录 概念 加载过程 初始化时机 类初始化顺序注意点 双亲委派模型 自定义类加载器 类加载 概念 Java虚拟机把...

  • 反射学习笔记

    类加载器 程序使用某个类,系统会通过加载、连接、初始化三步来实现对这个类进行初始化 何为加载:将class文件读入...

  • ClassLoad

    类的加载过程:类的加载—>类的连接—>类的初始化 类加载器ClassLoader JVM 定义了两种类型的类加载器...

网友评论

      本文标题:类加载-初始化

      本文链接:https://www.haomeiwen.com/subject/xcfdnktx.html