一,類載入器概述
1,bootstrap jre/lib/rt.jar
extclassloader jre/lib/ext/*.jar
2,父子關係
bootstrap
extclassloader
3,通過getparent()得到父親載入器
那麼根得到的是null,因為bootstrap是乙個特殊的類載入器
是隨著jvm啟動而啟動的,是一段c++的二進位制**
4,所有的類載入器都是乙個物件
5,類載入器的委託機制
載入一直向上,讓最根的類載入器載入(爺爺)
爺爺類載入器找不到,讓父親載入,父親載入不了,
推給孫子(也就是發起者),找不到,丟擲異常
不會拋給這個類載入的孩子。這樣可以保證記憶體中
有乙份唯一的位元組碼。
6,自定義類載入必須掛載在類載入樹上
需要繼承classloader
7,載入乙個類的時候,先使用當前執行緒的類載入器載入類
如果第第乙個類引用了第二個類,那麼第二個類的載入
是使用第乙個類的類載入器,也可以強制指定乙個類載入器進行載入
二,自定義類載入器
1,繼承classloader
2,僅僅需要覆蓋findclass();
子類先使用父類的loadclass(),不成功的話使用自己的findclasss()
如果子類複寫loadclass()那麼就會自己幹
3,defineclass()將class檔案轉換為位元組碼
java類載入器
public class classloaderattachment extends date 編譯後,在bin目錄會生成它的.class檔案,然後在專案目錄 bin的上一層把 建立乙個 temp folder 目錄,用於生成加密後的.class檔案 寫乙個main函式,把上面的classloade...
java類載入器備忘
類載入器 自定義類載入器必須繼承 classloader類,重寫父類的 findclass方法,因為loadclass 方法包含了類載入器的委託機制 所以我們仍然保留父類的 loadclass方法,然後使用 defineclass 將class 檔案通過位元組流載入到記憶體中 因為有委託機制 所以我...
JAVA類載入機制以及如何自定義類載入器
雙親委派機制描述 本文主要以tomcat7為例說明類載入機制,大家也可以參考tomcat7的類載入機制的官方文件。tomcat7總的classloader結構如下圖 各個類載入器載入類的範圍 載入順序預設如下 如果設定了,載入順序如下 jdk的解釋是這樣的 並不是給執行緒設定了contextclas...