摘要:學習能更深入的理解這門語言,能理解語言底層的執行過程,深入到字節碼層次。
目錄
?
①一般在什么情況下會去加載一個類?也就是說,什么時候“.class”字節碼文件中加載這個類到JVM內存里來?
JVM是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用于計算設備的規范,
它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。
學習JVM能更深入的理解Java這門語言,能理解Java語言底層的執行過程,深入到字節碼層次。
從本篇文章開始,我將帶領大家先把JVM運行機制的整體脈絡梳理清楚,然后不斷的深入學習。
另外,本系列的更新進度一定會各位滿意,因為我也即將進入急速成長狀態,我們一起加油!
我們知道“.java”代碼文件,編譯成“.class”字節碼文件,然后類加載器把“.class”字節碼文件中的類給加載到JVM中,JVM就會基于自己的字節碼執行引擎,來執行加載到內存里的我們寫好類。那類的加載機制是怎么樣的呢?類加載器和雙親委派機制又是什么呢?
其實一個類從加載到使用要經過:加載 -> 驗證 -> 準備 -> 解析 -> 初始化 -> 使用 -> 卸載
答:代碼中用到這個類的時候。
答:驗證是校驗你加載進來的“.class”文件,是否符合指定的規范,而準備是給驗證后的類分配一定的內存空間、給里面的類(靜態)變量(也就是static修飾的變量)分配內存空間、默認的初始值,解析階段實際上是把符號引用替換為直接引用的過程。
答:如“new ReplicaManager()”來實例化類的對象了,此時就會觸發類的加載到初始化的全過程,把這個類準備好,然后再實例化一個對象出來;(包含“main()”方法的主類,必須是立馬初始化的。)
注意,如果初始化一個類的時候,發現他的父類還沒初始化,那么必須先初始化他的父類
Bootstrap ClassLoader,負責加載我們在機器上安裝的Java目錄下的核心類
Extension ClassLoader,Java安裝目錄下,有一個“lib/ext”目錄
這里面有一些類,就是需要使用這個類加載器來加載的,支撐你的系統的運行。
Application ClassLoader,這類加載器負責去加載環境變量所指定的路徑中的類,
可以理解為去加載你寫好的Java代碼!
自定義類加載器,可以根據自己的需求加載類。
JVM的類加載器是有親子層級結構的,就是說啟動類加載器是最上層的,擴展類加載器在第二層,第三層是應用程序類加載器,最后一層是自定義類加載器。也就是說,需要加載一個類時,先由最上層找,找不到就由下一層找,最后找到需要加載這個類的類加載器,然后這個加載器就自己把這個類加載到內存里去了。這就是雙親委派模型,可以避免多層級的加載器結構重復加載某些類。
給大家留一個問題:什么場景下會用到自定義類加載器呢?
????????????????????????????????????????????????????????????????本系列下一篇文章鏈接
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.hztianpu.com/yun/123598.html
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...
摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...
閱讀 1941·2021-11-17 09:33
閱讀 1294·2021-11-12 10:36
閱讀 2560·2019-08-30 15:54
閱讀 2556·2019-08-30 13:14
閱讀 3079·2019-08-26 14:05
閱讀 3468·2019-08-26 11:32
閱讀 3275·2019-08-26 10:09
閱讀 3148·2019-08-26 10:09