Android 面试—深入理解Android类加载机制

前言

任何一个java程序都是由一个或者多个class文件组成,在程序运行时,需要将class文件加载到JVM中才可以使用,负责加载这些class文件的就是java的类加载机制。ClassLoader的作用简单的来说就是加载class文件,提供给程序运行时使用,每个Class对象的内部都有一个ClassLoader字段来标识自己是由哪个Classloader加载的。

Java与Android类加载机制的区别

我们都知道JavaJVM虚拟机加载的是Class文件,而DVMART加载的是Dex文件,所以java的类加载器和Android的类加载器是不一样的。Java中的类加载器主要有系统加载器自定义加载器两种类型。系统类加载器主要是Bootstrap ClassLoaderExtensions ClassloaderApplication Classloader3种。Android中的Classloader类型和java中一样,也分为系统加载器自定义加载器两种。系统类加载器主要包括3种,分别是BootClassloaderPathClassloaderDexClassLoader这三种,接下来我们就来简单的了解一下Android中的类加载器。

Android中的类加载器

在这里插入图片描述

  • BaseDexClassLoader:实现应用层类文件的加载,真正的加载逻辑委托给PathList来完成。

  • PathClassLoader:继承自BaseDexClassLoader,加载系统类和应用程序的类,通常用来加载已安装的apkdex文件,实际上外部存储的dex文件也能加载。

  • DexClassLoader:继承自BaseDexClassLoader,可以加载dex文件以及包含dex的压缩文件(apk,dex,jar,zip),不管加载哪种文件,最终都要加载dex文件。Android8.0之后和PathClassloader无异。

  • BootClassLoaderAndroid系统启动时会使用BootClassLoader来预加载常用类,它继承自ClassLoader,是顶层的父加载器parent

PathClassLoader & DexClassLoader的异同

PathClassLoader构造方法:

public PathClass
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值