日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面试必会系列 - 1.4 类加载机制

發(fā)布時間:2024/2/28 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试必会系列 - 1.4 类加载机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文已收錄至 github,完整圖文:https://github.com/HanquanHq/MD-Notes

類加載機制

類加載機制,類加載的過程?

  • class loading 加載:JVM 把描述類的數(shù)據(jù)從 Class 文件加載到內(nèi)存中
  • class linking 連接
  • verification:校驗裝進來的 class 文件是否符合標準,比如 CA FE BA BE
  • preparation:將 class 文件的靜態(tài)變量賦默認值(不是初始值)
  • resolution:把 class 文件常量池中用到的符號引用,轉(zhuǎn)換為直接內(nèi)存地址可以直接訪問到的內(nèi)容
  • class initializing 初始化:靜態(tài)變量這時候才會賦初始值
  • 申請對象內(nèi)存
  • 成員變量賦默認值
  • 調(diào)用構(gòu)造方法
    • 成員變量按照順序賦初始值
    • 執(zhí)行構(gòu)造方法語句
  • 最終形成可以被虛擬機直接使用的 Java 類型,這個過程稱為虛擬機的類加載機制。
  • 雙親委派機制(parent 翻譯不準確,應(yīng)為父類委派機制)

    雙親委派機制是一個遞歸,不同的類加載器加載不同的 class。

    Bootstrap ClassLoader 啟動類加載器
    • C++實現(xiàn)

    • 加載 <JAVA_HOME>/lib下的類,是 jdk 最核心的內(nèi)容,例如 rt.jar, charset.jar

    • 加載路徑:sun.boot.class.path

    Extension ClassLoader 擴展類加載器
    • Java 實現(xiàn)

    • 加載擴展包中的類,在 jdk 安裝目錄 jre/lib/ext 下的 jar

    • 加載路徑:java.ext.dirs

    Application ClassLoader 系統(tǒng)類加載器
    • 我們寫的代碼默認就是由它來加載

    • 加載 classpath 指定的內(nèi)容

    • 加載路徑:java.class.path

    User ClassLoader 用戶自定義加載器
    • 加載自己定義的加載器

    類加載器的加載過程

  • 子類先委托父類加載
  • 父類加載器有自己的加載范圍,范圍內(nèi)沒有找到,則不加載,并返回給子類
  • 子類在收到父類無法加載的時候,才會自己去加載
  • 為什么要搞雙親委派?

    主要為了安全。如果任何一個 class 都可以把它 load 到內(nèi)存的話,那我就可以自定義一個 java.lang.string 類,交給自定義的 ClassLoader,把這個我自己的 string 類打包給客戶,它被 load 進內(nèi)存,然后客戶把密碼存儲成 String 類型對象,我偷摸把密碼發(fā)給自己,這樣就不安全了。

    總結(jié)

    以上是生活随笔為你收集整理的面试必会系列 - 1.4 类加载机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。