Java类加载
Java类加载的过程:
加载–>链接(验证>准备>解析)–>初始化–>使用–>卸载
加载: 通过类的权限定名获取二进制字节流, 将二进制字节装载到方法区中, 内存中生成对应的class对象
Java的.java源码在编译过后变成.class的字节码文件.
加载的过程就是将.class文件装载到JVM的方法区中, 方法区可以当作是一个JVM虚拟的磁盘, 专门用于存放.class的字节码文件.
在类进行new操作的时候, JVM从方法区中读取字节码文件, 在堆中实例化出对应的对象.
Class.forName和ClassLoader.loadClass
类加载的过程中有一步“初始化”
初始化的时候会初始化类的static变脸和执行静态代码块
Class.forName内部调用的是Class.forName(className, true, classloader)
第二个参数表示是否初始化
ClassLoader.loadClass(className, false)
第二个参数表示是否进行链接, 不进行链接, 那么也就不会进行后面初始化的步骤, 静态代码块也就不会执行.