Java加载class文件的过程
-
装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象;
-
连接:执行校验、准备和解析步骤
校验:检查导入类或接口的二进制数据的正确性;(文件格式验证,元数据验证,字节码验证,符号引用验证)
准备:给类的静态变量分配并初始化存储空间
解析:将常量池中的符号引用转成直接引用
-
初始化:激活类的静态变量的初始化Java代码和静态Java代码块,并初始化程序员设置的变量值
加载class到JVM中的方式有两种
1.Class.forName(“className”)
该方法最终调用:Class.forName(className, true, ClassLoader.getCallerClassLoader())
- className:需要加载的类的名称
- true:是否对class进行初始化(需要initialize)
- classLoader:指定加载该类的类加载器
2.ClassLoader.loadClass(“className”)
该方法最终调用:ClassLoader.loadClass(name, false)
- name&#