码迷,mamicode.com
首页 > 移动开发 > 详细

Android ClassLoader

时间:2017-08-14 21:25:54      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:path   技术分享   adc   tcl   log   机制   loader   防止   使用   

ClassLoader负责把类从磁盘加载进内存,交给虚拟机处理。

标准Java虚拟机的ClassLoader体系结构如下(都是抽象类ClassLoader的子类)

 技术分享

ClassLoader使用双亲委派机制,加载一个类,先看上边一系列父类有没有加载,如果没有的话父类再传给下边的一系列子类让其自己加载。这样的好处是防止重复加载,父类加载一次,所有继承他的子类就都算加载了,并且安全性好,防止子类加载的类破坏父类已经加载的类。

技术分享

这个算法逻辑是在loadClass方法里实现的,子类如果想添加自己的加载规则,不要覆盖这个类,而是覆写findClass,loadClass方法会在找不到类的使用调用子类的这个方法来加载

Android里是从jar和odex,oat文件里加载类,对此定制了自己的ClassLoader体系,把虚拟机里的C++ bootstrap classloader放进了ClassLoader文件里,成为BootClassLoader,并添加了PathClassLoader(下边的图说的不准,未安装apk的dex也可以加载)和DexClassLoader,如下图

技术分享

下面先看ClassLoader文件

 

Android ClassLoader

标签:path   技术分享   adc   tcl   log   机制   loader   防止   使用   

原文地址:http://www.cnblogs.com/cascle/p/7359878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!