面试必会系列 - 1.4 类加载机制
本文已收錄至 github,完整圖文:https://github.com/HanquanHq/MD-Notes
類(lèi)加載機(jī)制
類(lèi)加載機(jī)制,類(lèi)加載的過(guò)程?
- 成員變量按照順序賦初始值
- 執(zhí)行構(gòu)造方法語(yǔ)句
雙親委派機(jī)制(parent 翻譯不準(zhǔn)確,應(yīng)為父類(lèi)委派機(jī)制)
雙親委派機(jī)制是一個(gè)遞歸,不同的類(lèi)加載器加載不同的 class。
Bootstrap ClassLoader 啟動(dòng)類(lèi)加載器
-
C++實(shí)現(xiàn)
-
加載 <JAVA_HOME>/lib下的類(lèi),是 jdk 最核心的內(nèi)容,例如 rt.jar, charset.jar
-
加載路徑:sun.boot.class.path
Extension ClassLoader 擴(kuò)展類(lèi)加載器
-
Java 實(shí)現(xiàn)
-
加載擴(kuò)展包中的類(lèi),在 jdk 安裝目錄 jre/lib/ext 下的 jar
-
加載路徑:java.ext.dirs
Application ClassLoader 系統(tǒng)類(lèi)加載器
-
我們寫(xiě)的代碼默認(rèn)就是由它來(lái)加載
-
加載 classpath 指定的內(nèi)容
-
加載路徑:java.class.path
User ClassLoader 用戶(hù)自定義加載器
- 加載自己定義的加載器
類(lèi)加載器的加載過(guò)程
為什么要搞雙親委派?
主要為了安全。如果任何一個(gè) class 都可以把它 load 到內(nèi)存的話(huà),那我就可以自定義一個(gè) java.lang.string 類(lèi),交給自定義的 ClassLoader,把這個(gè)我自己的 string 類(lèi)打包給客戶(hù),它被 load 進(jìn)內(nèi)存,然后客戶(hù)把密碼存儲(chǔ)成 String 類(lèi)型對(duì)象,我偷摸把密碼發(fā)給自己,這樣就不安全了。
總結(jié)
以上是生活随笔為你收集整理的面试必会系列 - 1.4 类加载机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 线性代数:如何最通俗地理解矩阵的「秩」?
- 下一篇: 面试必会系列 - 1.5 Java 锁机