http://blog.csdn.net/lfdfhl/article/details/52673536
类加载器有啥用? 顾名思义,加载类用的,是将类加载到内存中。
Android中每个App会创建一个类加载器也就是ClassLoader 去加载dex。
dex是android中可执行文件的类型。
.dex结构分成三部分:
文件头:表明了是dex文件,已经文件的大小等等数据
索引头:如下图所示
数据区:数据区,就像是jvm中的堆保存方法+变量。(写在这对jvm的常量池,堆栈,寄存器不是很清楚,准备专门在写一篇文章记录下加强自己的记忆)
ClassLoader是一个抽象类:有三个子类,
PathClassLoader
它只能加载已经安装的apk中的资源,比如dex文件
URLClassLoader
它只能用于加载jar文件中的资源。但是dalvik不能直接识别jar,所以这个加载器极少使用。
DexClassLoader
它用于从.jar和.apk类型的文件内部加载classes.dex。该类加载器常用来完成动态加载apk的需求。
一个App中有两个加载器:PathClassLoader(加载dex)和BootClassLoader(系统启动时创建的,加载系统层级的类)