原创 JVM之類加載與初始化篇二(加載 / 自定義加載器)

JVM 類加載器: 1.jvm虛擬機自帶的加載器。 1).根類加載器(Bootstrap),對應系統屬性sun.boot.class.path,由C++實現; 2).擴展類加載器(Extension), 對應系統屬性java.ext.di

原创 基於字節碼分析try/catch/finally執行流程

程序示例: public class TestTryCatchFinally { public static void main(String[] args) { System.out.println(test

原创 JVM之類加載與初始化篇三(線程上下文類加載器和SPI機制)

說明: 如果一個類由類加載器A加載,那麼這個類依賴的類也是由相同的類加載器嘗試加載。(依賴類沒有被加載過) 問題:java對數據庫連接只提供了一套規範,也就是接口類。具體的實現有各個廠商提供。java.sql.*中的所有類都位於rt.ja

原创 集合ArrayList源碼解析

ArrayList是常用的集合類,底層所使用的是數組。其特點相對數組來說可以動態擴充。  構造函數方法: List<T> list = new ArrayList<>(); List<E> list2 = new ArrayList<>(

原创 HashMap源碼分析(初始化/添加)

HashMap的整體構成,數組+鏈表+紅黑樹(一種自平衡樹),jdk1.8後加入紅黑樹進行優化。  源碼分析: 1.初始化:new HashMap<>(); //默認加載因子值:當數組空間達到75%,要對數組進行擴容

原创 JVM之類加載與初始化篇二(加載)

JVM 類加載器: 1.jvm虛擬機自帶的加載器。 1).根類加載器(Bootstrap),對應系統屬性sun.boot.class.path,由C++實現; 2).擴展類加載器(Extension), 對應系統屬性java.ext.di

原创 JVM之類加載與初始化篇一(初始化)

JVM中類加載和初始化的說明: 在java代碼中,類型的加載、連接、初始化過程都是在運行期完成的。 1.加載:查找並加載類的二進制數據,具體來說, 是將類的.class文件中的二進制數據讀入到內存中,將其放在運行時數據區的 方法區中,讓後