當前位置:科普知識站>IT科技>

java|classloader

IT科技 閱讀(3.35W)

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

java classloader是什麼,讓我們一起了解一下?

ClassLoader就是用來動態載入class檔案到記憶體當中用的,通過Java的類載入機制來動態載入某個class檔案到記憶體當中的,從而只有class檔案被載入到了記憶體之後,才能被其它class所引用。

classloader(類載入器)的主要工作是什麼?

就是把類檔案載入到JVM中。

1、載入:定位要載入的類檔案,並將其位元組流裝載到JVM中。

2、連結:給要載入的類分配最基本的記憶體結構儲存其資訊,比如屬性,方法以及引用的類。

java classloader

在該階段,該類還處於不可用狀態。

(1)驗證:對載入的位元組流進行驗證,比如格式上的,安全方面的。

(2)記憶體分配:為該類準備記憶體空間來表示其屬性,方法以及引用的類。

(3)解析:載入該類所引用的其它類,比如父類,實現的介面等。

3、初始化:對類變數進行賦值。

java classloader 第2張

那麼類載入器是如何實現的?

當JVM(Java虛擬機器)啟動時,會形成由三個類載入器組成的初始類載入器層次結構:

bootstrap classloader            extension classloader      system classloader

bootstrap classloader -引導(也稱為原始)類載入器,它負責載入Java的核心類。在Sun的JVM中,在執行java的命令中使用-Xbootclasspath選項指定附加的類。這個載入器的是非常特殊的,它實際上不是 java.lang.ClassLoader的子類,而是由JVM自身實現的。大家可以通過執行以下程式碼來獲得bootstrap classloader載入了那些核心類庫:

URL[] urls=sun.misc.Launcher.getBootstrapClassPath().getURLs();   for (int i = 0; i < urls.length; i++) {     System.out.println(urls.toExternalform());   }