加载:
预加载:当系统被启用时直接加载需要的资源到内存中
懒加载:双重检查锁,通过双重判断进行检查是否需要创建实例,如果实例是null,第二次检查为同步锁->原因:当前实例是null,而在JVM中new和赋值是异步行为
类记载过程:
装载(Load)
通过全限定名获取类的字节流,将字节流转换为方法区运行的数据结构,再通过JVM堆生成class对象去访问数据
链接(Link)
文件格式验证:class文件格式
元数据验证:Java代码规范
字节码验证:字节码语义
符号引用验证:解析正常执行
初始化(Initialize)
初始化类变量的值
使用静态初始化类变量的值