美文网首页
ClassLoader基础

ClassLoader基础

作者: Wi1ls努力努力再努力 | 来源:发表于2018-12-12 10:27 被阅读0次
  • ClassLoader 类的继承关系和父加载器的概念不同。父加载器通过组合的形式定义。
  • 无论是 Android 还是 Java,类的加载均采用双亲委托模式
  • Java 中的 ClassLoader 用来加载 class 文件
  • Android 中的 ClassLoader 用来加载 dex 文件
Java ClassLoader 继承关系
  • Bootstrap ClassLoader(引导类加载器)
    • c/c++实现,加载 JDK 核心类库,如java.lang、java.uti;$JAVA_HOME/jre/lib、-Xbootclasspath
  • Extensions ClassLoader(扩展类加载器)
    • 加载 java 扩展类,$JAVA_HOME/jre/lib/ext、java.ext.dir 指定目录
  • Application CloassLoader(应用程序类加载器)
    • 加载当前程序 Classpath 目录、java.class.path 指定目录
双亲委托模式
Android ClassLoader 继承关系
  • 解析:
    • BootClassLoader
      • 系统启动时预加载常见类。采取单例模式
    • DexClassLoader
      • 加载 dex 文件机器包含 dex 的压缩文件(apk 和 jar)
    • PathCLassLoader
      • 加载系统类和应用程序的类
    • 其他
      • ClassLoader 是抽象类,定义了ClassLoader 主要功能。
      • 与 Java 中的 Bootstrap ClassLoader不同,Android 中的BootClassLoader 是 ClassLoader 的内部类,是 Java 类。而 Bootstrap ClassLoader 是 C++编写。
    • SecureClassLoader 只是扩展了 ClassLoader,加入了权限相关功能,并非实现类。
    • URLClassLoader 支持通过 URL从 jar 文件和文件夹加载类和资源
    • InMemoryDexClassLoader 是 Android8.0新增,支持加载内存的 dex 文件
    • BaseDexClassLoader 是 ClassLoader 的具体实现,PathClassLoader,DexClassLoader,InMemoryDexClassLoader 都是其子类。

  • 如果想保持双亲委派模式,则重写finClass(String name)
  • 如果想破坏双亲委派模式,则重写loadClass(String name)[双亲委派的核心代码]

相关文章

  • 自定义ClassLoader进行class文件加密

    1.基础使用ClassLoader 1.1 创建自定义ClassLoader并继承ClassLoader 这里我只...

  • Android ClassLoader

    ClassLoader 关于ClassLoader的介绍,可以参考之前提到的:Android动态加载基础 Clas...

  • ClassLoader基础

    ClassLoader 类的继承关系和父加载器的概念不同。父加载器通过组合的形式定义。 无论是 Android 还...

  • 热修复原理与基础范例

    原理 ClassLoader 与 双亲委托 热修复建立的基础是 ClassLoader 的加载机制。 Androi...

  • 初识ClassLoader

    ClassLoader原理 ClassLoader使用双亲委托模型来对类进行搜索加载。除了最基础的BootStra...

  • Java Classloader机制解析(转)

    做Java开发,对于ClassLoader的机制是必须要熟悉的基础知识,本文针对Java ClassLoader的...

  • Java ClassLoader 基础

    1. 类加载 JVM 首次使用某个类时,需通过 ClassPath 查找该类的 .class 文件 将 .clas...

  • 面试-Java相关

    Java Java基础思想 Jvm相关 垃圾回收机制 多线程与进程 基础数据结构 基本设计模式 ClassLoader

  • Java基础之ClassLoader

    前沿:作为Android开发工程师,特别是做到后期框架层面,很容易接触到classloader,往往还是对这个词的...

  • Java问题解疑

    一. Java基础 在java中String类为什么要设计成final? ClassLoader.loadClas...

网友评论

      本文标题:ClassLoader基础

      本文链接:https://www.haomeiwen.com/subject/yfvehqtx.html