首頁  >  文章  >  Java  >  java之JVM各類機制是什麼

java之JVM各類機制是什麼

PHPz
PHPz轉載
2023-05-26 17:48:40931瀏覽

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各類機制是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除