摘要:類加載器分類類加載器負責根據類的全限定名將文件加載到內存,生成類的對象。其為,且是我們自定義類默認的類加載器。具體的源碼分析可以參見深入理解類加載器。
類加載器分類
類加載器負責根據類的全限定名將class文件加載到JVM內存,生成Class類的對象。它分為以下幾種類型:
Bootstrap Classloader
由C++所寫,在JVM啟動后初始化,負責加載%JAVA_HOME%/jre/lib,-Xbootclasspath參數指定的路徑以及%JAVA_HOME%/jre/classes中的類
ExtClassLoader
是sun.misc.Launcher的內部類,繼承自java.net.URLClassLoader->java.security.SecureClassLoader->java.lang.ClassLoader,在rt.jar中,由Bootstrap Classloader加載,負責加載%JAVA_HOME%/jre/lib/ext和java.ext.dirs系統變量指定路徑中的類。parent ClassLoader為null(因為Bootstrap Classloader并不是由java實現的)。
AppClassLoader
也是sun.misc.Launcher的內部類,繼承自java.net.URLClassLoader,負責加載來自在命令java中的-classpath或者java.class.path系統屬性或者CLASSPATH系統屬性所指定的路徑中的類。其parent ClassLoader為ExtClassLoader,且是我們自定義類默認的類加載器。
雙親委派機制:如果一個類未加載,那么必須先由其父加載器(Bootstrap Classloader可以認為是ExtClassLoader父加載器)嘗試加載,如果父加載器在其路徑內找不到該類才由子加載器加載。可以防止核心類被外來類覆蓋。具體的源碼分析可以參見深入理解Java類加載器(ClassLoader)。
下面是結合源碼,畫出的利用AppClassLoader查找類的流程圖:
我們通常寫的用class(首字母c小寫)定義的類,表征了java虛擬機里對象的類型(java是強類型語言),但同時這些類又都是java.lang.Class(首字母C大寫)的對象,通過AppClassLoader加載進虛擬機內存方法區。每個類都對應一個獨一無二的Class對象,包括Java基本類型、void關鍵字及數組(所有同一維度和類型的數組擁有同樣的Class,數組的長度不做考慮。對應Class的名字表示為維度和類型。比如一個整型數據的Class名為“[I”,字節型三維數組Class名為“[[[B”,兩維對象數組Class名為“[[Ljava.lang.Object”)。得到Class對象的方法有三種:
MyObject foo = New MyObject(); Class c = foo.getClass(); Class c = Class.ForName("MyObject"); Class c = MyObject.class;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74791.html
摘要:慶幸的是,已經支持反射機制,來看看這個特性吧元數據反射可以通過安裝包來使用元數據反射的若要使用它,我們需要在中設置為,同時添加的引用,同時加載文件。復雜類型序列化的團隊為復雜類型的元數據序列化做出了努力。 本篇內容包括如下部分: 為什么JavaScript中需要反射 元數據反射API 基本類型序列化 復雜類型序列化 為什么JavaScript中需要反射? 關于反射的概念,摘自百度百...
摘要:所有這些類對于和應用程序都是可見的。或者日志實現類。其中包括稱為的的增強類以及由內部使用的庫的軟件包重命名副本。這個類加載器搜索的位置由中的屬性定義。中的所有其他類加載器都遵循通常的代理模式。 最好先了解Java的雙親委派機制再看這篇文章。 整體架構 Bootstrap | System | Common ...
摘要:樣式優先級原則總的原則規定擁有更高確定度的選擇器優先級更高如果樣式中包含沖突的規則,且它們具有相同的確定度。 樣式優先級原則 總的原則1.CSS規定擁有更高確定度的選擇器優先級更高2.如果樣式中包含沖突的規則,且它們具有相同的確定度。那么,后出現的規則優先級高。 優先級:由高到低(從上到下) !important 內聯(1,0,0,0) id: (0,1,0,0) 類:(0,0,1,...
閱讀 2967·2021-11-25 09:43
閱讀 3633·2021-08-31 09:41
閱讀 1237·2019-08-30 15:56
閱讀 2119·2019-08-30 15:55
閱讀 2993·2019-08-30 13:48
閱讀 2816·2019-08-29 15:15
閱讀 984·2019-08-29 15:14
閱讀 2657·2019-08-28 18:26