ClassLoader

類加載機(jī)制[1]

Java 默認(rèn)提供的三個(gè) ClassLoader

BootStrap ClassLoader

稱為啟動(dòng)類加載器,是 Java 類加載層次中最頂層的類加載器,負(fù)責(zé)加載JDK中的核心類庫,如:rt.jar, resources.jar, charsets.jar 等

Extension ClassLoader

稱為擴(kuò)展類加載器,負(fù)責(zé)加載Java的擴(kuò)展類庫,默認(rèn)加載 JAVA_HOME/jre/lib/ext 目錄下的所有 jar

App ClassLoader

稱為系統(tǒng)類加載器,負(fù)責(zé)加載應(yīng)用程序 classpath 目錄下的所有 jar 和 class 文件

如果你需要從其他路徑,比如網(wǎng)絡(luò)上加載類的時(shí)候就需要實(shí)現(xiàn)自己的類加載器。類加載器的作用就是告訴虛擬機(jī)去哪里加載所需要的類。用了委派的設(shè)計(jì)模式。即便用自定義類去加載所類。它是向自己的上一級(jí)詢問這個(gè)類有沒有加載,逐級(jí)向上。如果都沒有加載。再由上到下嘗試去加載。如下圖:

classLoader

內(nèi)存泄漏[2]

每個(gè)對(duì)象,都有一個(gè)對(duì)它的類的引用,object.getClass()
每個(gè)類對(duì)象,都有一個(gè)對(duì)它的 classLoader 的引用,object.getClass().getClassLoader()

同樣的每個(gè) classLoader 對(duì)它加載的類對(duì)象都有一個(gè)引用。如果某個(gè)對(duì)象發(fā)生了內(nèi)存泄漏,則它的類對(duì)象也不能被回收,加載類對(duì)象的 classLoader 也就不能被回收,根據(jù)垃圾回收的規(guī)則,該 classLoader 加載的類對(duì)象都不能被回收。


  1. http://blog.csdn.net/xyang81/article/details/7292380 ?

  2. http://zeroturnaround.com/rebellabs/rjc201/ ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,853評(píng)論 18 399
  • 創(chuàng)意,一直是我們大家最容易接受的新鮮實(shí)物,隨著市面普通的冰皮月餅啟發(fā),繼韓式卡通月餅之后,我們?cè)俅瓮瞥鰳O具視覺挑逗...
    乖乖愛閑逛閱讀 1,287評(píng)論 0 0
  • 門鈴響了一遍又一遍,大清早的會(huì)是誰呢?打開門木子大叫“元虎!”原來亨源聯(lián)系到元虎讓大家不要擔(dān)心說自己很快就會(huì)回去的...
    蔡亨源閱讀 153評(píng)論 1 2
  • 初學(xué)Java遇到一個(gè)詫異的問題,Java函數(shù)的對(duì)象參數(shù)到底是拷貝傳遞還是引用傳遞,為了驗(yàn)證這個(gè)問題,寫了以下的一個(gè)...
    Vilarsail閱讀 1,304評(píng)論 2 5
  • 王寧分享 跑步后發(fā)現(xiàn)并不能再繼續(xù)瘦下來了 久病成醫(yī) 180減肥到130斤 你是如何做到的? 成就感非常強(qiáng) 體重減少...
    范范范范同學(xué)閱讀 1,155評(píng)論 1 0

友情鏈接更多精彩內(nèi)容