美文网首页
Java类加载时机和初始化顺序

Java类加载时机和初始化顺序

作者: fanyank | 来源:发表于2018-08-23 11:42 被阅读63次

类加载的时机和初始化的时机

摘自:https://www.cnblogs.com/javaee6/p/3714716.html
类加载的时机:

  1. Java核心类库(如rt.jar)
    在虚拟机启动的时候进行预加载,各个类库被不同的ClassLoader所加载

    • Bootstrap ClassLoader/启动类加载器
      主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.
    • Extension ClassLoader/扩展类加载器
      主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作
  2. 用户自己定义的类
    在虚拟机启动的时候被加载

    • System ClassLoader/系统类加载器
      主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包装入工作
      体现了Java语言的动态性,在合适的时候被加载进JVM中
    • User Custom ClassLoader/用户自定义类加载器(java.lang.ClassLoader的子类)
      在程序运行期间, 通过java.lang.ClassLoader的子类动态加载class文件, 体现java动态实时类装入特性.

类初始化的时机:
1. 新建对象实例
2. 访问静态变量和静态方法时
3. 使用java.lang.reflect进行反射调用时
4. 初始化一个类时,其父类还没有进行初始化
5. 虚拟机启动时,定义main()方法的那个类先初始化

初始化类的执行顺序

摘自:https://www.cnblogs.com/Qian123/p/5713440.html

  • 一般顺序

    1. 静态变量声明,静态代码块
    2. 普通变量声明,代码块
    3. 构造函数
  • 包含继承

    1. 父类静态代码块,子类静态代码块
    2. 父类代码块,父类构造函数
    3. 子类代码块,子类构造函数
  • 包含main()方法

    1. 包含main()方法的类的静态块
    2. main()方法
    3. 根据main()方法中的声明按需加载

只有涉及到实例对象才会去执行代码块和构造函数,否则初始化阶段只会执行静态变量赋值,静态代码块(即clinit()方法)

相关文章

  • 类加载机制

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

  • Java类加载时机和初始化顺序

    类加载的时机和初始化的时机 摘自:https://www.cnblogs.com/javaee6/p/371471...

  • 我的秋招之路-面经篇

    Java基础 类加载的时机和类初始化的时机(引出tomcat类加载器)JVM和绝大多数用户自定义的类在JVM启动的...

  • 类初始化和加载过程

    一、对象的初始化顺序: java类加载器加载类的顺序:http://blog.csdn.net/crazycode...

  • JAVA的类加载顺序

    理解关于java类的加载顺序 首先来捋一捋java类的加载顺序吧 父类静态代码块 》》静态代码初始化,静态属性(带...

  • Java类加载与初始化

    今天复习了一下java类加载时的初始化顺序,先记录一下心得,代码后续补上。 类加载时的初始化顺序 1、一般来说,类...

  • 技术文章收集

    单例模式Java 类加载静态类加载时机

  • JVM类加载入门

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

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

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

  • Java类加载机制和对象创建过程

    Java类加载机制和对象创建过程 1、类加载 类加载的时机 ​ 类加载,即虚拟机加载.class文件。什么时候虚拟...

网友评论

      本文标题:Java类加载时机和初始化顺序

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