首页 > 代码库 > Android ClassLoader
Android ClassLoader
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。