導航:首頁 > 編程語言 > 載入器java三種

載入器java三種

發布時間:2025-03-24 07:30:37

java的ServiceLoader有多個類載入器

JVM有三種類載入器:bootstrap負責載入系統類,extclassloader負責載入擴展類,appclassloader負責載入應用類。他們主要是分工不一樣,各自負責不同的區域,另外也是為了實現委託模型。什麼是委託模型呢,其實就是當類載入器有載入需求的時候,先請示他的父類使用父類的搜索路徑來加入,如果沒有找到的話,才使用自己的搜索路徑來來搜索類。
當執行 java ***.class 的時候, java.exe 會幫助我們找到 JRE ,接著找到位於 JRE 內部的 jvm.dll ,這才是真正的 Java 虛擬機器 , 最後載入動態庫,激活 Java 虛擬機器。虛擬機器激活以後,會先做一些初始化的動作,比如說讀取系統參數等。一旦初始化動作完成之後,就會產生第一個類載入器―― Bootstrap Loader , Bootstrap Loader 是由 C++ 所撰寫而成,這個 Bootstrap Loader 所做的初始工作中,除了一些基本的初始化動作之外,最重要的就是載入 Launcher.java 之中的 ExtClassLoader ,並設定其 Parent 為 null ,代表其父載入器為 BootstrapLoader 。然後 Bootstrap Loader 再要求載入 Launcher.java 之中的 AppClassLoader ,並設定其 Parent 為之前產生的 ExtClassLoader 實體。這兩個載入器都是以靜態類的形式存在的。這里要請大家注意的是, Launcher$ExtClassLoader.class 與 Launcher$AppClassLoader.class 都是由 Bootstrap Loader 所載入,所以 Parent 和由哪個類載入器載入沒有關系。
下面的圖形可以表示三者之間的關系:
BootstrapLoader <---(Extends)----AppClassLoader <---(Extends)----ExtClassLoader
這三個載入器就構成我們的 Java 類載入體系。他們分別從以下的路徑尋找程序所需要的類:
BootstrapLoader : sun.boot.class.path
ExtClassLoader: java.ext.dirs
AppClassLoader: java.class.path
這三個系統參量可以通過 System.getProperty() 函數得到具體對應的路徑。大家可以自己編程實現查看具體的路徑。

⑵ java中類載入器是怎麼工作的

JVM將類載入過程分為三個步驟:裝載(Load),鏈接(Link)和初始化(Initialize)
鏈接又分為三個步驟,驗證、准備、解析
1) 裝載:查找並載入類的二進制數據;
2)鏈接:
驗證:確保被載入類的正確性;
准備:為類的靜態變數分配內存,並將其初始化為默認值;
解析:把類中的符號引用轉換為直接引用;
3)初始化:為類的靜態變數賦予正確的初始值;
那為什麼我要有驗證這一步驟呢?首先如果由編譯器生成的class文件,它肯定是符合JVM位元組碼格式的,但是萬一有高手自己寫一個class文件,讓JVM載入並運行,用於惡意用途,就不妙了,因此這個class文件要先過驗證這一關,不符合的話不會讓它繼續執行的,也是為了安全考慮吧。
准備階段和初始化階段看似有點牟盾,其實是不牟盾的,如果類中有語句:private static int a = 10,它的執行過程是這樣的,首先位元組碼文件被載入到內存後,先進行鏈接的驗證這一步驟,驗證通過後准備階段,給a分配內存,因為變數a是static的,所以此時a等於int類型的默認初始值0,即a=0,然後到解析(後面在說),到初始化這一步驟時,才把a的真正的值10賦給a,此時

閱讀全文

與載入器java三種相關的資料

熱點內容
無法發送信息該如何恢復伺服器 瀏覽:264
程序員在電子廠能做什麼 瀏覽:164
單片機八燈閃爍 瀏覽:527
福昕pdf顏色 瀏覽:519
金山詞霸app在哪裡 瀏覽:314
web前端需要編程嗎 瀏覽:8
php數組模糊匹配 瀏覽:923
自製2051單片機燒寫 瀏覽:781
恆大名都門禁卡是加密的嗎 瀏覽:48
氣憤PDF 瀏覽:462
杭州手機dns伺服器地址 瀏覽:498
matlab智能演算法書籍 瀏覽:216
web數據挖掘pdf 瀏覽:838
感謝程序員的協作 瀏覽:674
android獲取簡訊列表 瀏覽:454
壓縮文件夾無效或已損壞 瀏覽:830
文件夾命名橫杠如何輸入 瀏覽:800
cl編譯64位 瀏覽:130
猿人時代安卓手機怎麼玩 瀏覽:169
android網路交互 瀏覽:771