jvm前奏篇

javac編譯原理 源文件----->類文件java

  詞法分析------>語法分析------>語義分析----字節碼生成器------.class 文件spa

javap  反編譯3d

之因此能處處運行就是 由於 class文件   就是 經過 javaformat  規範code

java 類加載機制:orm

類文件要運行在JVM中,裝載、連接、初始化對象

 

 裝載:blog

① 就是查找和導入class 文件 將類文件轉換爲 二進制流  ClassLoader 類加載,不一樣的類加載器,加載不一樣區域的class文件內存

② 講二進制流的靜態結構,轉換到 運行時數據區的某一塊區域【方法區】io

 

 同名的類 由上層去加載,這種模式叫作 雙親委派模型  (由父親去加載,父親加載到了 本身就不去加載了) 若是想打破這種規律,就是 重寫 classLoader裏面的 findClass方法  此處須要作實驗 破壞雙親委派模型編譯

雙親委派模型很好地解決了各個類加載器的基礎類統一問題(越是基礎的類越由上層加載器加載),基礎類被其餘的對象鎖調用,可是若是基礎類須要加載調回其餘用戶的代碼的時候模型便會被破壞。

雙親委派模型工做過程是:若是一個類加載器收到類加載的請求,它首先不會本身去嘗試加載這個類,而是把這個請求委派給父類加載器完成。每一個類加載器都是如此,只有當父加載器在本身的搜索範圍內找不到指定的類時(即ClassNotFoundException),子加載器纔會嘗試本身去加載。

 

連接:

1、驗證

      驗證數據的有效性

2、準備

      爲類的靜態變量分配內存、初始化值 爲默認值

3、解析

      把類中的符號引號轉化爲直接引用

初始化:

類的靜態變量,賦值真正的值

相關文章
相關標籤/搜索