下面有关java类加载器牛客网_下面有关java classloader说法错误的是?
0
有的書上介紹的JVM中3個默認ClassLoader是:BootStrap ClassLoader,Extension
ClassLoader,System ClassLoader。當然有時我們也可以設置UseLibrary ClassLoader。這個題是不是有問題呢?
發表于 2015-08-24 16:46:27
回復(0)
更多回答
142
推薦
C
JVM在判定兩個c
查看全部
編輯于 2015-01-10 21:03:23
回復(13)
136
一個jvm中默認的classloader有Bootstrap ClassLoader、Extension
ClassLoader、App ClassLoader,分別各司其職:
Bootstrap
ClassLoader???負責加載java基礎類,主要是
%JRE_HOME/lib/ 目錄下的rt.jar、resources.jar、charsets.jar和class等
Extension ClassLoader
負責加載java擴展類,主要是 %JRE_HOME/lib/ext 目錄下的jar和class
App ClassLoader?????? 負責加載當前java應用的classpath中的所有類。
classloader 加載類用的是全盤負責委托機制。
所謂全盤負責,即是當一個classloader加載一個Class的時候,這個Class所依賴的和引用的所有 Class也由這個classloader負責載入,除非是顯式的使用另外一個classloader載入。
所以,當我們自定義的classlo
ader加載成功了
com.company.MyClass以后,MyClass里所有依賴的class都由這個classLoader來加載完成。
發表于 2015-09-20 22:38:32
回復(4)
114
比較兩個類是否相等,只有這兩個類是由同一個類加載器加載才有意義。否則,即使這兩個類是來源于同一個Class文件,只要加載它們的類加載器不同,那么這兩個類必定不相等。
補充:
1.
什么是類加載器?
把類加載的過程放到Java虛擬機外部去實現,讓應用程序決定如何去獲取所需要的類。實現這個動作的代碼模塊稱為“類加載器”。
2.
有哪些類加載器,分別加載哪些類
類加載器按照層次,從頂層到底層,分為以下三種:(1)啟動類加載器:它用來加載Java的核心庫,比如String、System這些類(2)擴展類加載器:它用來加載Java的擴展庫。
(3)
應用程序類加載器 :負責加載用戶類路徑上所指定的類庫,一般來說,Java應用的類都是由它來完成加載的。
3.
雙親委派模型
我們應用程序都是由以上三種類加載器互相配合進行加載的,還可以加入自己定義的類加載器。稱為
類加載器的雙親委派模型
,這里類加載器之間的父子關系一般不會以繼承的關系來實現,而是都使用
組合關系
來復用父加載器的。
4.
雙親委托模型的工作原理
是當一個類加載器收到了類加載的請求,它首先不會自己去嘗試加載這個類,而是把這個請求委派給父類加載器去完成,每一個層次的類加載都是如此,因此所有的加載請求最終都應該傳送到頂層的啟動類加載器中,只有當父加載器反饋自己無法加載這個加載請求的時候,子加載器才會嘗試自己去加載。
5.
使用雙親委派模型好處?(原因)
第一:可以避免重復加載,當父親已經加載了該類的時候,子類不需要再次加載。
第二:考慮到安全因素,如果不使用這種委托模式,那我們就可以隨時使用自定義的String來動態替代java核心api中定義類型,這樣會存在非常大的安全隱患,而雙親委托的方式,就可以避免這種情況,因為String已經在啟動時被加載,所以用戶自定義類是無法加載一個自定義的類裝載器。
編輯于 2016-11-07 22:07:51
回復(10)
21
ClassLoader使用的是
雙親委托模型
來搜索類的,每個ClassLoader實例都有一個父類加載器的引用(不是繼承的關系,是一個包含的關系),虛擬機內置的類加載器(Bootstrap
ClassLoader)本身沒有父類加載器,但可以用作其它ClassLoader實例的的父類加載器。當一個ClassLoader實例需要加載某個類時,它會試圖親自搜索某個類之前,先把這個任務委托給它的父類加載器,這個過程是由上至下依次檢查的,首先由最頂層的類加載器Bootstrap
ClassLoader試圖加載,如果沒加載到,則把任務轉交給Extension
ClassLoader試圖加載,如果也沒加載到,則轉交給App ClassLoader 進行加載,如果它也沒有加載得到的話,則返回給委托的發起者,由它到指定的文件系統或網絡等URL中加載該類。如果它們都沒有加載到這個類時,則拋出ClassNotFoundException異常。否則將這個找到的類生成一個類的定義,并將它加載到內存當中,最后返回這個類在內存中的Class實例對象。
發表于 2016-03-27 14:34:57
回復(4)
5
在JVM中,一個類用其全限定類名和其類加載器作為唯一標識,
如果在pg包下,有一個Person類,classloade k1 、
classloade k2分別加載Person類
則
Person類在JVM中對應的Class對象為
(
Person,pg,k1
)與
(
Person,pg,k2
)
是不同的
發表于 2016-03-08 11:24:09
回復(0)
3
classloader的作用是用來加載 Class 的:它負責將 Class 的字節碼形式轉換成內存形式的 Class 對象。
字節碼可以來自于磁盤文件 *.class,也可以是 jar 包里的 *.class,也可以來自遠程服務器提供的字節流,字節碼的本質就是一個字節數組 []byte,它有特定的復雜的內部格式。
JVM 運行實例中會存在多個 ClassLoader,不同的 ClassLoader 會從不同的地方加載字節碼文件。
它可以從不同的文件目錄加載,也可以從不同的 jar 文件中加載,也可以從網絡上不同的靜態文件服務器來下載字節碼再加載。
jvm里ClassLoader的層次結構
發表于 2020-05-03 10:06:37
回復(0)
3
選C
A、Java中存在三種系統加載器:
1. Bootstrap ClassLoader(啟動類加載器),這個類加載器負責把存放在\lib目錄中,或者被-Xbootclasspath參數指定得路徑中得,并且被JVM識別得類庫加載進入JVM。注意一下,這個加載器不能被Java程序直接引用。這個加載器是由C++寫得。
2. Extension ClassLoder(擴展類加載器),這個加載器負責加載\lib\ext目錄中的,或者被java.ext.dirs系統變量所指定的路徑中的所有類庫。這個類加載器可以直接使用。
3. Application ClassLoader(應用程序加載器),用來加載classpath中所指定的類庫。這個是默認的類記載器。
B、類加載器中除了頂層的啟動類加載器,其余的類加載器都是必須有自己的父類加載器。但是這種子父關系一般不會以繼承的關系實現,而是使用了組合的關系來復用父加載器的代碼。
類加載器都正常情況下都是以雙親委派模型工作的,工作原理如下,如果一個類加載器收到了類加載的請求,它首先不會自己去嘗試加載這個類,而是把這個請求委派給父類加載器去完成,每一個層次的類加載器都是如此,因此所有的加載請求最終都應該傳送給頂層的啟動類加載器,只有當父加載器反饋自己無法完成時,子加載器才會嘗試自己去加載。
C、一個類在JVM中的唯一性是由類本身和類加載器一起決定的。每一個類加載器都有一個獨立的類名稱空間。
D、類加載器就是動態的把.class文件加載進JVM,沒毛病。
發表于 2018-07-04 11:47:35
回復(0)
1
C,只有同一個類加載器加載的相同類名的才是一個class
發表于 2015-09-15 16:30:33
回復(0)
0
jvm判斷兩個class是否相同,類名相同,同一類加載器實例加載
發表于 2021-02-20 16:18:42
回復(0)
0
這個不熟
發表于 2020-09-17 22:39:26
回復(0)
0
不會
發表于 2020-03-10 21:37:30
回復(0)
0
JVM中默認的ClassLoader是Bootstrap ClassLoader,Extension ClassLoader,App ClassLoader
>Bootstrap ClassLoader 負責加載java基礎類 主要是%JRE_HOME/lib/目錄下的rt.jar resources.jar,charsets.jar和class等
>Exrension ClassLoader 負責加載java擴展類 %JRE_HOME/lib/text目錄下的jar和class
>App ClassLoader 負責加載java應用的classpath中的所有類
1.什么是類加載器?
把類加載過程放到 java虛擬機外部去實現,讓應用程序決定如何獲取需要的類,稱為類加載器
2.類加載器分為 啟動類加載器 擴展類加載器 應用類加載器
3.雙親委派機制:三種類加載器相互配合,還可以添加自定義類加載器,進行類加載稱為雙親委派機制;
4.工作原理,委派父類加載器加載,一直委派到根類,如果無法加載,子類就會自動調用類加載器加載
5.雙親委派機制 避免了重復加載 考慮到了安全因素
發表于 2018-09-20 11:01:32
回復(0)
0
類名和類加載器都要比較
發表于 2017-10-26 20:43:38
回復(0)
0
一個jvm中默認的classloader有Bootstrap ClassLoader、Extension ClassLoader、App ClassLoader,分別各司其職: Bootstrap ClassLoader?????負責加載java基礎類,主要是 %JRE_HOME/lib/ 目錄下的rt.jar、resources.jar、charsets.jar和class等 Extension ClassLoader????? 負責加載java擴展類,主要是 %JRE_HOME/lib/ext 目錄下的jar和class App ClassLoader?????????? 負責加載當前java應用的classpath中的所有類。 jvm判斷兩個類是否 相等,不止類名相等,類的加載器也必須相等。 classloader 加載類用的是全盤負責委托機制。 所謂全盤負責,即是當一個classloader加載一個Class的時候,這個Class所依賴的和引用的所有 Class也由這個classloader負責載入,除非是顯式的使用另外一個classloader載入。 所以,當我們自定義的classlo ader加載成功了 com.company.MyClass以后,MyClass里所有依賴的class都由這個classLoader來加載完成。 比較兩個類是否相等,只有這兩個類是由同一個類加載器加載才有意義。否則,即使這兩個類是來源于同一個Class文件,只要加載它們的類加載器不同,那么這兩個類必定不相等。 補充: 1. 什么是類加載器? 把類加載的過程放到Java虛擬機外部去實現,讓應用程序決定如何去獲取所需要的類。實現這個動作的代碼模塊稱為“類加載器”。
編輯于 2017-10-14 10:22:04
回復(0)
0
JVM在判定兩個class是否相同時,不僅要判斷兩個類名是否相同,而且要判斷是否由同一個類加載器實例加載的。
發表于 2017-08-07 09:55:06
回復(0)
0
比較兩個類是否相等,只有這兩個類是由同一個類加載器加載才有意義。否則,即使這兩個類是來源于同一個Class文件,只要加載它們的類加載器不同,那么這兩個類必定不相等。
補充: 1. 什么是類加載器?
把類加載的過程放到Java虛擬機外部去實現,讓應用程序決定如何去獲取所需要的類。實現這個動作的代碼模塊稱為“類加載器”。 ? 2.
有哪些類加載器,分別加載哪些類 類加載器按照層次,從頂層到底層,分為以下三種: (1)啟動類加載器 : 它用來加載 Java
的核心庫,比如String、System這些類 (2)擴展類加載器 : 它用來加載 Java 的擴展庫。 (3) 應用程序類加載器 :
負責加載用戶類路徑上所指定的類庫,一般來說,Java 應用的類都是由它來完成加載的。 3. 雙親委派模型
我們應用程序都是由以上三種類加載器互相配合進行加載的,還可以加入自己定義的類加載器。稱為 類加載器的雙親委派模型
,這里類加載器之間的父子關系一般不會以繼承的關系來實現,而是都使用 組合關系 來復用父加載器的。 4. 雙親委托模型的工作原理
是當一個類加載器收到了類加載的請求,它首先不會自己去嘗試加載這個類,而是把這個請求委派給父類加載器去完成,每一個層次的類加載都是如此,因此所有的加載請求最終都應該傳送到頂層的啟動類加載器中,只有當父加載器反饋自己無法加載這個加載請求的時候,子加載器才會嘗試自己去加載。
5. 使用雙親委派模型好處?(原因) 第一:可以避免重復加載,當父親已經加載了該類的時候,子類不需要再次加載。
第二:考慮到安全因素,如果不使用這種委托模式,那我們就可以隨時使用自定義的String來動態替代java核心api中定義類型,這樣會存在非常大的安全隱患,而雙親委托的方式,就可以避免這種情況,因為String已經在啟動時被加載,所以用戶自定義類是無法加載一個自定義的類裝載器。
發表于 2016-12-12 09:37:21
回復(0)
0
全盤委托,類加載器,類名相同,類加載器相同
發表于 2016-10-22 08:09:54
回復(0)
0
JVM在判定兩個class是否相同時,不僅要判斷兩個類名是否相同,而且要判斷是否由同一個類加載器實例加載的。
發表于 2016-04-13 21:04:05
回復(0)
0
答案:C
由于類加載器的雙親委托機制,不同類加載器加載的類必定不是同一個類
發表于 2015-01-10 11:46:28
回復(0)
0
C.JVM在判定兩個class是否相同時,只用判斷類名相同即可,和類加載器無關
發表于 2015-01-06 18:15:11
回復(0)
總結
以上是生活随笔為你收集整理的下面有关java类加载器牛客网_下面有关java classloader说法错误的是?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中filereader读取文件_
- 下一篇: java实现一个单例设计模式_Java正