溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java之JVM各類機制的示例分析

發布時間:2021-04-30 14:28:18 來源:億速云 閱讀:144 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關java之JVM各類機制的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Java可以用來干什么

Java主要應用于:1. web開發;2. Android開發;3. 客戶端開發;4. 網頁開發;5. 企業級應用開發;6. Java大數據開發;7.游戲開發等。

在我們討論java的基礎部分時,大家都有用過jdk這個工具包,同時還會講到另一個重要概念jvm。從名稱上我們翻譯一下,就是虛擬的計算機。對于jvm模塊的內容比較難懂,所以我們可以先從它的一些機制入手:類加載、雙親委派、全盤負責委托機制。下面就這些機制分別帶來講解。

1.類加載機制

分為加載、驗證 、準備 、解析 、初始化、 使用 、卸載。

(1)加載

在硬盤上查找并通過IO讀入字節碼文件,使用到類時才會加載,例如調用類的main()方法,new對象 等等,在加載階段會在內存中生成一個代表這個類的java.lang.Class對象,作為方法區這個類的各種數據的訪問入口 。

(2)驗證

校驗字節碼文件的正確性 。

(3)準備

給類的靜態變量分配內存,并賦予默認值 。

(4)解析

將符號引用替換為直接引用,該階段會把一些靜態方法(符號引用,比如main()方法)替換為指向數據 所存內存的指針或句柄等(直接引用),這是所謂的靜態鏈接過程(類加載期間完成),動態鏈接是在程 序運行期間完成的將符號引用替換為直接引用,下節課會講到動態鏈接 。

(5)初始化

2.雙親委派機制

對類的靜態變量初始化為指定的值,執行靜態代碼塊。

應用程序類加載器AppClassLoader加載類的雙親委派機制源碼,AppClassLoader的loadClass方法最終會調用其父類ClassLoader的loadClass方法,該方法的大體邏輯如下:

首先,檢查一下指定名稱的類是否已經加載過,如果加載過了,就不需要再加載,直接返回。

如果此類沒有加載過,那么,再判斷一下是否有父加載器;如果有父加載器,則由父加載器加載(即調用parent.loadClass(name, false);)?;蛘呤钦{用bootstrap類加載器來加載。

如果父加載器及bootstrap類加載器都沒有找到指定的類,那么調用當前類加載器的findClass方法來完成類加載。

3.全盤負責委托機制

“全盤負責”是指當一個ClassLoder裝載一個類時,除非顯示的使用另外一個ClassLoder,該類所依賴及引用的類也由這個ClassLoder載入。

關于“java之JVM各類機制的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女