Android: Java的ClassLoader和Android的ClassLoader的區別

他們的不同點:

  • 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孵化器的創建過程尋找蛛絲馬跡。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章