java核心機制——jvm運行以及類加載全過程

jvm運行和類加載

爲啥要研究類加載全過程?
~~有助於瞭解JVM運行過程
~~更深入瞭解java動態性,(解熱部署,動態加載)提高程序來的靈活性。
類加載機制
~JVM把class文件加載到內存,並對數據進行校驗,解析和初始化,最終形成JVM可以直接使用的java類型的過程。

加載
~將class文件字節碼內容加載到內存中,並將這些靜態數據轉換成方法去中運行是數據結構,早堆中生成一個代表這個類的java.lang.Class對象,作爲方法區類數據的訪問入口。

鏈接
將java類的二進制代碼合併到jvm的運行狀態之中的過程
~驗證:確保加載的類信息符合jvm規範,沒有安全方面的問題。
~準備:正式類變量(static變量)分配內存並設置變量初始值的階段,這些內存都將在方法去中進行分配
~解析:虛擬機常量吃內的符號引用替換爲直接引用的過程。
初始化
~初始化階段執行類構造器<clinnt>()方法的過程。構造器<clinit>()方法是由編譯器自動收集類中的所有類變量的賦值動作和靜態語句(static塊)中的語句合併產生的。
~當初初始化一個類的時候,如果發現父類還沒有進行初始化,則需要先發出父類的初始化
~虛擬機會保證一個類的<clinit>()方法在多線程環境中被正確加鎖和同步。
~當訪問一個java類的靜態域時,只要真正聲明這個域的類纔會被初始化。
package com.cn.love.ui;

public class test {
	public static void main(String[] args) {
		A a = new A();
		System.out.println(A.width);
		
	}
}
class A{
	public static int width=100;
	
	static {
		System.out.println("靜態初始類A");
		width=300;
	}
	public A(){
		System.out.println("創建A類的對象");
	}
}


發佈了30 篇原創文章 · 獲贊 26 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章