类加载机制的第一步就是“加载”,
大致可以分为 种情况:
-
遇到new、getstatic、putstatic、invokestatic这四条指令,简单点说就是:
- 使用new关键在来实例化对象
- 读取、修改静态字段
- 调用一个类型的静态字段
-
使用反射对类型进行调用
-
当一个接口中定义了默认方法(JDK8),在初始化这个接口的实现类时,也会触发该接口的加载
总之,简单点说:
只要你在代码中用到了一个类型的静态字段,就会触发类加载,如果该类有父类,则会先触发父类的类加载;如果有接口,先加载这个接口
只有在该类型第一次初始化时才会触发类加载,后续的实例化此类型,就不会触发类加载了