當前位置:首頁 » 存儲配置 » NRV存儲

NRV存儲

發布時間: 2025-09-21 02:28:58

⑴ JVM之class載入過程

java虛擬機把描述類的數據從class文件載入到內存,並對數據進行 校驗/准備/解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這個過程被稱作虛擬機的類載入機制。

稱作虛擬機的類載入機制。

loading -> linking (verification -> preparation -> resolution)-> resolution)->initializing

loading: 把class文件load到內存中,採用雙親委派,主要是為了安全性

verification: 校驗class文件是否符合標准

preparation: 靜態變數分配內存並設初始值的階段(不包括實例變數)

resolution:把符號引用轉換為直接引用

initializing:靜態變數賦初始值

類載入的過程主要分為三個部分:載入、連接、初始化這三個階段。

類的載入指的是將類的.class文件中的二進制數據讀入到內存中,將其放在運行時數據區的方法區內,然後在堆區創建一個這個類的java.lang.Class對象,用來封裝類在方法區類的對象。主要步驟可以分為下面的三件事情:

載入階段完成後,虛擬機外部的 二進制位元組流就按照虛擬機所需的格式存儲在方法區之中,而且在Java堆中也創建一個java.lang.Class類的對象,這樣便可以通過該對象訪問方法區中的這些數據。

類的載入的最終產品是位於堆區中的Class對象。Class對象封裝了類在方法區內的數據結構,並且向Java程序員提供了訪問方法區內的數據結構的介面。載入類的方式有以下幾種:

2.載入器

JVM的類載入是通過ClassLoader及其子類來完成的,類的層次關系和載入順序可以由下圖來描述:

1.BootstrapClassLoader(啟動類載入器)

在連接裡面又可以被分成3個小階段,分別是:驗證,准備,解析

1.驗證(目的):

2.驗證內容:

驗證是連接階段的第一步,這一階段的目的是為了確保Class文件的位元組流中包含的信息符合當前虛擬機的要求,並且不會危害虛擬機自身的安全。驗證階段大致會完成4個階段的檢驗動作:

驗證階段是非常重要的,但不是必須的,它對程序運行期沒有影響,如果所引用的類經過反復驗證,那麼可以考慮採用-Xverifynone參數來關閉大部分的類驗證措施,以縮短虛擬機類載入的時間。

3.准備:

在准備階段,為靜態變數的初值為jvm默認的初值,而不是我們在程序中設定的初值。jvm默認為靜態變數的初值是這樣的

4.解析:

這一階段的任務就是把常量池中的符號引用轉換為直接引用 什麼是符號引用,什麼是直接引用。

1.工作內容:

JVM負責主要對類變數(類變數就是static修改的變數)進行初始化這里主要對類變數(類變數就是static修改的變數)進行初始化,初始化主要有兩個方式:

2.初始化時機:

類初始化時機:只有當對類的主動使用的時候才會導致類的初始化,類的主動使用包括以下六種:

3.初始化順序:

如果有父類,則順序是:父類static方法/static變數賦值 –> 子類static方法/static變數賦值

三、結語:

上面介紹的就是類(class)的載入,包含它的載入、鏈接、初始化。
Android進階知識點,我最近整理了許多,裡面講解的非常詳細。取
https://docs.qq.com/doc/DUkNRVFFzTG96VHNiAndroid 技術進階手冊丶面試題綱丶核心筆記資料。

熱點內容
cs15反腳本 發布:2025-09-21 04:24:01 瀏覽:824
微信零錢包密碼怎麼改 發布:2025-09-21 04:10:18 瀏覽:853
nginx整合php 發布:2025-09-21 04:01:56 瀏覽:1000
編譯原理27答案 發布:2025-09-21 03:58:09 瀏覽:800
otc機器人試教器編程 發布:2025-09-21 03:56:12 瀏覽:580
代碼生成腳本的作用 發布:2025-09-21 03:44:53 瀏覽:695
小蜜腳本設置監控 發布:2025-09-21 03:42:36 瀏覽:57
微信正在修復資料庫 發布:2025-09-21 03:34:38 瀏覽:656
pythonhttp文件下載 發布:2025-09-21 03:30:26 瀏覽:777
行李箱上面的密碼鎖是干什麼用的 發布:2025-09-21 03:30:25 瀏覽:928