Android: Java的ClassLoader和Android的ClassLoader的区别

他们的不同点:

  • Java的引导类加载器是由C++编写的,Android中的引导类加载器则是用Java编写的。
  • Android的继承关系要比java继承关系更加复杂一些,提供的功能也多。
  • 由于android中加载的不再是class文件,因此android中没有ExtClassLoader和AppClassLoader。代替的是PathClassLoader、DexClassLoader.

Java中的ClassLoader:

java中的类加载器主要有2种类型:系统类加载器、自定义类加载器。

其中的系统类加载器:

Android: Java的ClassLoader和Android的ClassLoader的区别_第1张图片

继承关系图:

Android: Java的ClassLoader和Android的ClassLoader的区别_第2张图片

 

类加载器查找Class采用:双亲委托模式。

Android中的ClassLoader:

 

Android: Java的ClassLoader和Android的ClassLoader的区别_第3张图片

继承关系图:

Android: Java的ClassLoader和Android的ClassLoader的区别_第4张图片

 

JVM虚拟机也是一个重要的内容。

常说的JDK包含了Java语言、Java虚拟机、Java API类库。【JDK是java程序开发的最小环境】

          JRE包含了Java API中的Java SE API 子集、Java虚拟机。

了解JVM的执行过程、JVM结构、类加载子系统、生命周期、对象的创建、GC、5大内存模型十分的重要。

 

具体细节可查阅《深入JVM虚拟机》或阅读源码

 

ClassLoader的创建流程在Android中可查看Zygote孵化器的创建过程寻找蛛丝马迹。

 

你可能感兴趣的:(Android,编程科普)