JVM:整體介紹與加載器(一)

1. JVM整體結構

本博文,是參考尚硅谷周陽老師來整理和總結的。
在這裏插入圖片描述

2.類加載器

2.1 什麼是類加載器

一個java.class文件,會經過類加載器加載到JVM裏,JVM裏創建這個文件的CLASS類,然後再在JVM裏實例化不同的對象。
通過對象,可以找到對應的類CLASS,通過CLASS可以找到這個類是由哪個加載器加載進來的
在這裏插入圖片描述

2.2 類加載器有幾種

類加載器分爲虛擬機自帶的和自定義,虛擬機自帶有BootStrapClassLoader(C++編寫)ExtClassLoader(JAVA編寫)AppClassLoader,這些系統自帶的類加載器,會去不同的地方加載已經編寫好的java類
1.BootstrapClassLoader 啓動類加載器

用C++編寫的 是最頂層的類裝載器,用來加載jre/lib/rt.jar下的類

2.ExtensionClassLoader拓展類加載器

用來加載jre/lib/ext/*.jar的所有類

3.AppClassLoader 應用類加載器

應用類加載器,也叫系統類加載器,用來加載當前應用classpath下的所有類

4.User-Definend 用戶自定義的類加載器

繼承 java.lang.ClassLoader類實現裏面的方法,自定義加載類的方法

在這裏插入圖片描述

在這裏插入圖片描述

2.3 雙親委派機制

在這裏插入圖片描述
正如上面我們自定義了一個String類,當執行這個類的時候,首先是父加載器先去找這個類,當父加載器找到這個類後,就實例化這個類,然後調用main方法執行,但是JDK的String這個類是沒有main方法的,所以就會報錯,而不是加載我們自己定義的類。
在這裏插入圖片描述

2.4 沙箱安全機制

沙箱安全機制是由基於雙親委派機制上 採取的一種JVM的自我保護機制,假設你要寫一個java.lang.String 的類,由於雙親委派機制的原理,此請求會先交給Bootstrap試圖進行加載,但是Bootstrap在加載類時首先通過包和類名查找rt.jar中有沒有該類,有則優先加載rt.jar包中的類,因此就保證了java的運行機制不會被破壞.

3.執行引擎

就是負責解釋命令,提交操作系統執行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章