大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 職業(yè)指南 比較代表性的jvm加載器面試題及答案

比較代表性的jvm加載器面試題及答案

更新時間:2023-02-03 11:23:09 來源:動力節(jié)點 瀏覽1574次

Java編程最大的特點就是與平臺的無關(guān)性,使用Java虛擬機來實現(xiàn)這一點是最關(guān)鍵的,所以我們在面試相關(guān)崗位的時候,JVM的相關(guān)面試題經(jīng)常被問到,今天小編就總結(jié)了一些比較有代表性的問題,希望可以在就業(yè)上給予大家一些幫助:

jvm加載器面試題及答案

1、Class.forName 和 ClassLoader.loadClass 都能加載類,這兩者在加載類時的區(qū)別?

  • Class.forName有重載方法可以指定是否需要初始化,而默認的方法初始化設(shè)置為true這會初始化類執(zhí)行鏈接和初始化操作
  • ClasaLoader是有類加載器的loadClass方法加載,傳入的是false,只會執(zhí)行連接操作,不會初始化操作

Class.forName()方法實際上也是調(diào)用的CLassLoader來實現(xiàn)的。

Class.forName(String className);這個方法的源碼是:

@CallerSensitive public static Class forName(String className) throws ClassNotFoundException { Class caller = Reflection.getCallerClass(); return forName0(className, true, ClassLoader.getClassLoader(caller), caller); }

最后調(diào)用的方法是forName0這個方法,在這個forName0方法中的第二個參數(shù)被默認設(shè)置為了true,這個參數(shù)代表是否對加載的類進行初始化,設(shè)置為true時會類進行初始化,代表會執(zhí)行類中的靜態(tài)代碼塊,以及對靜態(tài)變量的賦值等操作。Class.forName加載類是將類進了初始化,而ClassLoader的loadClass并沒有對類進行初始化,只是把類加載到了虛擬機中

2、什么叫類加載器

虛擬機把描述類的數(shù)據(jù)文件(字節(jié)碼)加載到內(nèi)存,并對數(shù)據(jù)進行驗證、準備、解析以及類初始化,最終形成可以被虛擬機直接使用的java類型(java.lang.Class對象)。

3、類的生命周期

加載過程:通過一個類的全限定名來獲取定義此類的二進制字節(jié)流,將這個字節(jié)流所代表的靜態(tài)存儲結(jié)構(gòu)轉(zhuǎn)化為方法區(qū)的運行時數(shù)據(jù)結(jié)構(gòu)。在內(nèi)存中(方法區(qū))生成一個代表這個類的java.lang.Class對象,作為方法區(qū)這個類的各種數(shù)據(jù)的訪問入口;

找到類文件(通過類的全限定名來獲取定義此類的二進制字節(jié)流)

放入方法區(qū)(將這個字節(jié)流所代表的靜態(tài)存儲結(jié)構(gòu)轉(zhuǎn)化為方法區(qū)的運行時數(shù)據(jù)結(jié)構(gòu))

開個入口(生成一個代表此類的java.lang.Class對象,作為訪問方法區(qū)這些數(shù)據(jù)結(jié)構(gòu)的入口)

驗證過程:為了確保Class文件的字節(jié)流中包含的信息符合當(dāng)前虛擬機的要求,文件格式驗證、元數(shù)據(jù)驗證、字節(jié)碼驗證、符號引用驗證

準備過程:正式為類屬性分配內(nèi)存并設(shè)置類屬性初始值的階段,這些內(nèi)存都將在方法區(qū)中進行分配

解析階段:虛擬機將常量池內(nèi)的符號引用替換為直接引用的過程

初始化階段:類初始化階段是類加載過程的最后一步。初始化階段就是執(zhí)行類構(gòu)造器()方法的過程

使用階段:

卸載階段:

4、類加載器

類加載器負責(zé)加載所有的類,同一個類(一個類用其全限定類名(包名加類名)標志)只會被加載一次。

  1. Bootstrap ClassLoader:根類加載器,負責(zé)加載java的核心類,它不是java.lang.ClassLoader的子類,而是由JVM自身實現(xiàn)
  2. Extension ClassLoader:擴展類加載器,擴展類加載器的加載路徑是JDK目錄下jre/lib/ext,擴展類的getParent()方法返回null,實際上擴展類加載器的父類加載器是根加載器,只是根加載器并不是Java實現(xiàn)的
  3. Application ClassLoader:應(yīng)用程序類加載器,它負責(zé)在JVM啟動時加載來自java命令的-classpath選項、java.class.path系統(tǒng)屬性或CLASSPATH環(huán)境變量所指定的jar包和類路徑。程序可以通過getSystemClassLoader()來獲取系統(tǒng)類加載器。系統(tǒng)加載器的加載路徑是程序運行的當(dāng)前路徑。

雙親委派模型的工作過程

  1. 先查找當(dāng)前ClassLoader是否加載過此類,有就返回;
  2. 如果沒有,查詢父ClassLoader是否已經(jīng)加載過此類,如果已經(jīng)加載過,就直接返回Parent加載的類;
  3. 如果整個類加載器體系上的ClassLoader都沒有加載過,才由當(dāng)前ClassLoader加載(調(diào)用findClass),整個過程類似循環(huán)鏈表一樣。

雙親委托機制的作用

  1. 共享功能:可以避免重復(fù)加載,當(dāng)父親已經(jīng)加載了該類的時候,子類不需要再次加載,一些Framework層級的類一旦被頂層的ClassLoader加載過就緩存在內(nèi)存里面,以后任何地方用到都不需要重新加載。
  2. 隔離功能:java核心類庫的純凈和安全,防止惡意加載。

如何打破雙親委派模型?

  1. 雙親委派模型的邏輯都在loadClass()中,重寫loaderClass()、findClass()
  2. 系統(tǒng)自帶的三個類加載器都加載特定目錄下的類,如果我們自己的類加載器放在一個特殊的目錄,那么系統(tǒng)的加載器就無法加載,也就是最終還是由我們自己的加載器加載

打破雙親委派

“雙親委派”機制只是Java推薦的機制,并不是強制的機制。

比如JDBC就打破了雙親委派機制。它通過Thread.currentThread().getContextClassLoader()得到線程上下文加載器來加載Driver實現(xiàn)類,從而打破了雙親委派機制。

自定義ClassLoader

  1. loadClass(String name,boolean resolve):根據(jù)指定的二進制名稱加載類
  2. findClass(String name): 根據(jù)二進制名稱來查找類
  3. 直接使用或繼承已有的ClassLoader實現(xiàn):java.net.URLClassLoader、java.security.SecureClassLoader、 java.rmi.server.RMIClassLoader
  4. 在調(diào)用loadClass(),會先根據(jù)委派模型在父加載器中加載,如果加載失敗,則會調(diào)用自己的findClass方法來完成加載

5、引起類加載操作的五個行為

遇到new、getstatic、putstatic或invokestatic這四條字節(jié)碼指令

反射調(diào)用的時候,如果類沒有進行過初始化,則需要先觸發(fā)其初始化

子類初始化的時候,如果其父類還沒初始化,則需先觸發(fā)其父類的初始化

虛擬機執(zhí)行主類的時候(有 main(string[] args))

JDK1.7 動態(tài)語言支持

以上就是“比較代表性的jvm加載器面試題及答案”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動力節(jié)點Java官網(wǎng)。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: a级片免费在线播放 | 亚洲精品自产拍在线观看 | 顶级欧美色妇xxxxbbbb | 一本久久精品一区二区 | 91福利在线免费观看 | 天堂亚洲国产日韩在线看 | 一级毛片一级片 | 精品国产午夜久久久久九九 | 久久成人免费 | s8国产成人精品视频 | 99精选视频 | 国产精品九九视频 | 一级毛片美国一级j毛片不卡 | 国产精品久久综合桃花网 | 炮房五月 | 最刺激黄a大片免费观看下截 | 青青青青久久国产片免费精品 | 亚洲综合成人网在线观看 | 成人毛片国产a | 97精品国产97久久久久久 | 尹人综合| 久久久www成人免费精品 | 亚洲伦理精品久久 | 国产在线精彩视频 | 成人亚洲欧美 | 日韩美女一级毛片 | 国产精品2020在线看亚瑟 | 在线高清免费爱做网 | 日本免费中文字幕在线看 | 中文字幕国产综合 | 伊人狼人视频 | 一级免费看| 黄色影院网站 | 欧美一级h| 4hu四虎| 久久草精品视频 | 日韩美女一级毛片 | 久操国产 | 成人毛片免费在线观看 | 精品国产免费观看久久久 | 久草视频在线免费看 |