ClassLoader的主要职责就是负责加载各种class文件到JVM中,ClassLoader是一个抽象的class,给定一个class的二进制文件名,ClassLoader会尝试加载并且在JVM中生成构成这个类的各个数据结构,并将其分布在JVM的内存中
JVM采用懒加载,只要第一次使用的时候才会加载初始化类
只有6种情况除外:
- new
- 访问静态变量
- 访问静态方法
- 对某个类进行反射
- 初始化子类会导致父类的初始化(若通过子类使用父类的静态变量只会导致父类初始化)
- 启动了,也就是执行了main函数所在的类
类加载(这里的加载指第一阶段的加载,并非加载结束 )的最终产物就是堆内存种的class对象