wittyResry / myIssue

My issue mark down^_^ 欢迎吐槽,讨论~~
https://github.com/wittyResry/myIssue/issues
The Unlicense
5 stars 1 forks source link

类装载器ClassLoader #80

Open wittyResry opened 6 years ago

wittyResry commented 6 years ago

类装载器工作机制

  1. 装载:查找和导入Class文件;
  2. 链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的: 2.1 校验:检查载入Class文件数据的正确性; 2.2 准备:给类的静态变量分配存储空间; 2.3 解析:将符号引用转成直接引用;
  3. 初始化:对类的静态变量、静态代码块执行初始化工作。
wittyResry commented 5 years ago

在java中Class.forName()和ClassLoader都可以对类进行加载。ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流”,获取到二进制流后放到JVM中。 Class.forName()方法实际上也是调用的CLassLoader来实现的。

    @CallerSensitive
    public static Class<?> forName(String className)
                throws ClassNotFoundException {
        Class<?> caller = Reflection.getCallerClass();
        return forName0(className, true, ClassLoader.getClassLoader(caller), caller);
    }