ClassLoader的分類及加載順序
- 2019 年 11 月 24 日
- 筆記
1.主要分4類,見下圖橙色部分
JVM類加載器:這個模式會加載JAVA_HOME/lib下的jar包
擴展類加載器:會加載JAVA_HOME/lib/ext下的jar包
系統類加載器:這個會去加載指定了classpath參數指定的jar文件
用戶自定義類加載器:sun提供的ClassLoader是可以被繼承的,允許用戶自己實現類加載器
2.類加載器的加載順序如圖所示:

3.類加載順序
JVM並不是把所有的類一次性全部加載到JVM中的,也不是每次用到一個類的時候都去查找,對於JVM級別的類加載器在啟動時就會把默認的JAVA_HOME/lib里的class文件加載到JVM中,因為這些是系統常用的類,對於其他的第三方類,則採用用到時就去找,找到了就緩存起來的,下次再用到這個類的時候就可以直接用緩存起來的類對象了,ClassLoader之間也是有父子關係的,沒個ClassLoader都有一個父ClassLoader,在加載類時ClassLoader與其父ClassLoader的查找順序如下圖所示:
