掌握類加載器功能,你應該這麼記憶

首先要明白,JVM中類加載器的主要作用是將.class文件從磁盤加載到內存中。

JVM的類加載器主要分為引導類加載器、擴展類加載器、系統類加載器。


掌握類加載器功能,你應該這麼記憶

類加載器的分類


引導類加載器(Bootstrap Class Loader)

主要任務:加載Java的核心類庫(JAVA_HOME/jre/lib/rt.jar、resources.jar或sunboot。class。path路徑下的內容)


掌握類加載器功能,你應該這麼記憶

引導類加載器的任務


那麼rt.jar和resources.jar裡邊有什麼呢?

rt.jar和resources.jar中含有JVM自身需要的類,供JVM運行使用,所以引導類加載器很重要

擴展類加載器(Extension Class Loader)

主要任務:加載jre/lib/ext子目錄下加載類庫。(放在這個目錄下的文件,都會由擴展類加載器加載)


掌握類加載器功能,你應該這麼記憶

擴展類加載器的任務

系統類加載器(AppClassLoader)或者稱應用程序類加載器

主要任務:加載我們用戶自己寫的類

可以通過ClassLoader#getSystemClassLoader()方法獲取到類加載器


掌握類加載器功能,你應該這麼記憶

可以看出得到的就是AppClassLoader

總結:

  1. 引導類加載器:加載JVM核心類
  2. 擴展類加載器:加載JVM使用的擴展類
  3. 系統類加載器:加載用戶自定的類

可見他們個類加載器所加載的類沒有互相重疊的部分,各自負責各自的部分,共同完成類加載任務。就像社會分工一樣,有的負責生產食品的,有負責生產生活日用品的,有負責生產奢飾品的,各自有各自的分工,共同推動社會的進步。


概括:JVM類加載器之間不是上下層關係,也不是子父類繼承關係,而是包含關係。從他們的任務來看,他們是合作分工關係。


分享到:


相關文章: