Java 类加载的过程

加载过程

加载

将class文件加载入内存

连接

  1. 验证。防止传入错误数据弄脏JVM。
  2. 准备。给静态变量分配内存空间。
  3. 解析。将符号引用转为直接引用。

符号引用:

A引用B,此时是A引用了B的CONSTANT_Class_info(类似字符串)。

直接引用:

A引用B,那么A直接指向B的内存地址。

初始化执行过程

  1. 静态变量赋值
  2. 执行静态代码块
  3. 普通变量赋值
  4. 执行构造器内容

父类子类

加载子类的时候,如果父类没有加载,先加载父类。

内部类/外部类

静态内部类和外部类不存在依存关系。单独加载内部类,不会引起外部类的加载。

双亲委派原则

使用不同的类加载器都可以对类进行加载。为了防止对同一个类进行多次加载,加载时首先会将加载任务交给父加载器加载,如果父加载器不加载,再交回给子类加载器加载。

原文地址:https://www.cnblogs.com/pravez/p/12503703.html