日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JVM 学习四:类加载之双亲委派机制与沙箱安全机制

發(fā)布時間:2025/3/12 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM 学习四:类加载之双亲委派机制与沙箱安全机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 雙親委派機制

Java 虛擬機對 Class 文件的加載采用的是按需加載的方式,也就是說:當需要使用該類時才會將它的 Class 文件加載到內存生成 Class 對象,而且加載某個類的 Class 文件時,Java 虛擬機采用的是雙親委派模式,即把請求將由父類處理,它是一種任務委派模式。

1.1 工作原理

  • 如果一個類加載器收到了類加載的請求,它并不會馬上自己去加載,而是把這個請求委托給父類的加載器去執(zhí)行加載
  • 如果父類加載器還是存在其父類加載器,則進一步向上委托,依次遞推,請求最終將到達頂層的啟動類加載器
  • 如果父類加載器可以完成類加載任務,就成功返回,倘若父類加載器無法完成此加載任務,子加載器才會嘗試自己去加載,這就是雙親委派模式

  • 舉例:

    1.2 雙親委派機制優(yōu)勢

    • 避免類的重復加載
    • 保護程序安全,防止核心 API 被隨意篡改
      • 自定義類:java.lang.String
      • 自定義類:java.lang.GldwolfStart --> 這個類不會被允許加載,因為 java.lang 包下的類是由 Bootstrap ClassLoader 加載的,由于安全原因,不會被加載:java.lang.SecurityException: Prohibited package name: java.lang

    2 沙箱安全機制

    自定義 java.lang.String 類,但是在加載自定義的 String 類的時候會首先使用引導類加載器加載,而引導類加載器在加載的過程中會先加載 JDK 自帶的文件(rt.jar 包中的 java.lang.String.class),而自定義的 java.lang.String 類中有 main 方法,JDK 中的 String 類沒有 main 方法,所以會報錯說沒有 main 方法,就是因為加載的不是自定義的 String 類。這樣可以保證對 java 核心源代碼的保護,這就是沙箱安全機制

    3 其它

    在 JVM 中表示兩個 Class 對象是否為同一個類存在兩個必要條件:

    • 類的完整類名必須一致,包括包名
    • 加載這個類的 ClassLoader(指 ClassLoader 實例對象)必須相同

    換句話說,在 JVM 中,即使這兩個類對象(Class 對象)來源于同一個 Class 文件,被同一個虛擬機所加載,但是只要加載它們的 ClassLoader 實例對象不同,那么這兩個類對象也是不相等的 。

    3.1 對類加載器的引用

    JVM 必須知道一個類是由啟動類加載器加載的還是由用戶類加載器加載的,如果一個類是由用戶類加載器加載的,那么 JVM 會將這個類加載器的一個引用作為類信息的一部分保存在方法區(qū)中。當解析一個類型到另一個類型的引用的時候,JVM 需要保證這兩個類的類加載器是相同的。

    3.2 類的主動使用和被動使用

    Java 程序對類的使用方式分為:主動使用和被動使用

    3.2.1 主動使用

    主動使用又分為 7 種情況:

    • 創(chuàng)建類的實例
    • 訪問某個類或接口的靜態(tài)變量,或者對該靜態(tài)變量賦值
    • 調用類的靜態(tài)方法
    • 反射(比如:Class.forName("top.gldwolf.Test"))
    • 初始化一個類的子類
    • Java 虛擬機啟動時被標明為啟動類的類
    • JDK 7 開始提供的動態(tài)語言支持:
      • java.lang.invoke.MethodHandle 實例的解析結果
      • REF_getStatic、REF_putStatic、REF_invokeStatic 句柄對應的類沒有初始化,則初始化

    3.2.2 被動使用

    除了以上 7 種情況,其他使用 Java 類的方式都被看作是對類的被動使用,都不會導致類的初始化

    初始化:

    總結

    以上是生活随笔為你收集整理的JVM 学习四:类加载之双亲委派机制与沙箱安全机制的全部內容,希望文章能夠幫你解決所遇到的問題。

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