https://baijiahao.baidu.com/s?id=1636309817155065432&wfr=spider&for=pc
类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。
双亲委派
1、contextClassLoader 破坏双亲委派,spi接口,如sql 驱动器
类加载过程:
1、加载
2、链接
链接分:验证、准备、解析
解析阶段主要是虚拟机将常量池中的符号引用转化为直接引用的过程。
解析动作主要针对类或接口、字段、类方法、接口方法、方法类型、方法句柄和调用点限定符7类符号引用进行。
3、初始化
2、类加载的三种方式
认识了这三种类加载器,接下来我们看看类加载的三种方式。
(1)通过命令行启动应用时由JVM初始化加载含有main()方法的主类。
(2)通过Class.forName()方法动态加载,会默认执行初始化块(static{}),但是Class.forName(name,initialize,loader)中的initialze可指定是否要执行初始化块。
(3)通过ClassLoader.loadClass()方法动态加载,不会执行初始化块。
原文:https://www.cnblogs.com/sds-thinkfree/p/12865667.html