當前位置:科普知識站>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());   }