他們的不同點:
- Java的引導類加載器是由C++編寫的,Android中的引導類加載器則是用Java編寫的。
- Android的繼承關係要比java繼承關係更加複雜一些,提供的功能也多。
- 由於android中加載的不再是class文件,因此android中沒有ExtClassLoader和AppClassLoader。代替的是PathClassLoader、DexClassLoader.
Java中的ClassLoader:
java中的類加載器主要有2種類型:系統類加載器、自定義類加載器。
其中的系統類加載器:
繼承關係圖:
類加載器查找Class採用:雙親委託模式。
Android中的ClassLoader:
繼承關係圖:
JVM虛擬機也是一個重要的內容。
常說的JDK包含了Java語言、Java虛擬機、Java API類庫。【JDK是java程序開發的最小環境】
JRE包含了Java API中的Java SE API 子集、Java虛擬機。
瞭解JVM的執行過程、JVM結構、類加載子系統、生命週期、對象的創建、GC、5大內存模型十分的重要。
具體細節可查閱《深入JVM虛擬機》或閱讀源碼
ClassLoader的創建流程在Android中可查看Zygote孵化器的創建過程尋找蛛絲馬跡。