java类加载器-类加载的过程

类加载器-类加载的过程

类加载器 java->class文件(编译后的字节码文件),负责将class文件加载进内存中

java类加载器-类加载的过程_第1张图片

1.类在什么时候会被加载到内存中?

  • 触感见类的实例(对象)
  • 掉用类的类方法(静态方法)
  • 访问类活着呢接口的类变量,或者为该类变量赋值(静态变量)
  • 使用反射的方式来强制创建某个类或接口对应的java.lang.Class对象
  • 初始化某个类的子类(子类依赖父类)
  • 直接试用java.exe命令来运行某个主类

用到就加载,不用不加载

2.类加载过程

    1. 加载

      • 通过包名 + 类名,获取这个类,准备用流进行传输
      • 在这个类加载到内存中
      • 加载完毕创建一个class对象

    java类加载器-类加载的过程_第2张图片
    2. 链接

    • 验证

      确保Class文件字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身安全

      (文件中的信息是否符合虚拟机规范有没有安全隐患)

    java类加载器-类加载的过程_第3张图片

    • 准备

      负责为类的类变量(被static修饰的变量)分配内存,并设置默认初始化值

      (初始化静态变量)

java类加载器-类加载的过程_第4张图片

  • 解析

    将类的二进制数据流中的符号引用替换为直接引用

    (本类中如果用到了其他类,此时就需要找到对应的类)

java类加载器-类加载的过程_第5张图片

  1. 初始化

    根据程序员通过程序制定的主观计划去初始化类变量和其他资源

    (静态变量赋值以及初始化其他资源)

    java类加载器-类加载的过程_第6张图片

  • 小结

    • 当一个类被使用的时候,才会加载到内存
    • 类加载的过程: 加载、验证、准备、解析、初始化

你可能感兴趣的:(javaee,java)