类加载器

Posted gorgeousbankarian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类加载器相关的知识,希望对你有一定的参考价值。

什么是类加载器

就是类的快递员

有几种

  • 启动类加载器 Bootstrap (C++)

加载最基本的Java类,例如Java.lang中的类,提供用户的基本使用环境,是根加载器

  • 拓展类加载器 Extension? (Java)

加载的是随着时代变化,新添加到Java中的拓展类,例如Javax库中的类就是由其加载。

  • 应用程序类加载器 AppClassLoader

用户自定义的类加载。
技术图片

Test t = new Test();
t.getClass().getClassLoader().getParent().getParent();	=> null (Bootstrap)
t.getClass().getClassLoader().getParent();				=> ExtClassLoader
t.getClass().getClassLoader();							=> AppClassLoader

双亲委派

双亲委派就是指类加载的过程中,先不会加载本类,而是先把加载请求委派给父类。所以实际上类的加载是自顶向下,从最顶部的启动类加载器部分开始找,先到先得。
优先往上找,先到先用。作用是保护源代码,防止用户定义的重名的类污染Java原生代码。

沙箱安全

双亲委派就是为了沙箱安全机制,保护原生Java的源码

以上是关于类加载器的主要内容,如果未能解决你的问题,请参考以下文章

活动(加载器 - 下载)+ 3 个片段(使用加载器 - 计算)

损坏的顶点和片段着色器

Honeycomb 中的片段加载微调器/对话框

用于在多个活动/片段中重用的全局加载器 (LoaderManager)

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段

Android 逆向ART 脱壳 ( DexClassLoader 脱壳 | DexClassLoader 构造函数 | 参考 Dalvik 的 DexClassLoader 类加载流程 )(代码片段