目錄
前言
一、類加載過程
1. loading階段
2. Linking階段
2.1 驗證
2.2 準備
2.3 解析
3. Initialization階段
二、類加載器
1. 類加載器的分類
2. 用戶自定義類加載器
三、雙親委派機制
四、其他知識點
前言
JVM的內存結構如圖所示:
一、類加載過程
1. loading階段
2. Linking階段
2.1 驗證
正確的class文件開頭包含CA FE BA BE標識,如果文件不符合要求就會拋出錯誤。
2.2 準備
2.3 解析
符號引用:編譯時生成的一組文本符號,用來描述目標(比如類、方法或者字段)。
直接引用:能直接指向目標在內存中位置的指針、偏移量或者句柄。
3. Initialization階段
在初始化階段,會給類變量和靜態變量進行賦值。<clinit>是一個方法,不同于類構造器<init>。
二、類加載器
1. 類加載器的分類
對于用戶自定義類來說,默認使用系統類加載器進行加載。Java的核心類庫都是使用引導類加載器進行加載的(例如String類)。
2. 用戶自定義類加載器
三、雙親委派機制
優勢: