jvm的類載入機制主要有如下三種機制:
1.全盤負責:所謂全盤負責,就是說當乙個類載入器載入個個class的時候,該class所依賴和引用的其他class也將由該類載入
器負責載入,除非使用另外乙個類載入器來載入。
2.雙親委託:所謂雙親委託則是先讓parent(父)類載入器試圖載入該class(若父載入器仍有父類載入器,則繼續委託),只有在父類載入
器無法載入該類時才嘗試從自己的類路徑中載入該類。
3.快取機制:快取機制將會保證所有被載入過的class都會被快取,當程式中需要使用某個類時,類載入器會先從快取中搜尋該class,
只有當快取中不存在該class物件時,系統才會重新讀取該類的二進位制資料,並將其轉化為class物件,並存入cache。這
就是為什麼我們修改了class後,程式必須重新啟動jvm,程式所作的修改才會生效的原因。
原始碼分析:
檢視classloader類的原始碼:
protected synchronized class<?> loadclass(string name, boolean resolve)
throws classnotfoundexception
else
} catch (classnotfoundexception e)
}if (resolve)
return c;
}
JDK原始碼分析 Vector
vector和arraylist有一定的不同 int newcapacity oldcapacity capacityincrement 0 capacityincrement oldcapacity 從這一句我們可以看出 增長容量 capacityincrement 0 增長倍數 陣列數量 舊容量...
JDK原始碼分析 Collections
1.集合框架圖 hashmap是通過 拉鍊法 實現的雜湊表。它包括幾個重要的成員變數 table,size,threshold,loadfactor,modcount。table是乙個entry陣列型別,而entry實際上就是乙個單向鍊錶。雜湊表的 key value鍵值對 都是儲存在entry陣列...
JDK中String類的原始碼分析 二
1 startswith string prefix,int toffset 方法 包括startswith endswith 方法,都是呼叫上述乙個方法 1 public boolean startswith string prefix,int toffset 11while pc 0 15 16...