黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 職業(yè)指南 Java類加載機制面試題的六個常見問題

Java類加載機制面試題的六個常見問題

更新時間:2022-12-13 14:51:38 來源:動力節(jié)點 瀏覽1336次

Java面試題中被經(jīng)常問到的問題就是java類加載機制面試題了,或者是讓你通過一個程序員,回答程序的輸出步驟與結果是怎樣的,這些知識點都是與java類加載有關系的,所以我們掌握了java類加載機制面試題能夠讓面試更加的輕松應答:

java類加載機制面試題

1.Java什么時候把類加載到內(nèi)存?

Java虛擬機規(guī)范中并沒有進行強制約束,這點可以交給虛擬機的具體實現(xiàn)來自由把握。但是對于初始化階段,虛擬機規(guī)范則是嚴格規(guī)定了有且只有5種情況必須立即對類進行“初始化”,而加載、驗證、準備自然需要在此之前開始。

1.使用new關鍵字實例化對象的時候、讀取或設置一個類的靜態(tài)字段(被final修飾、已在編譯期把結果放入常量池的靜態(tài)字段除外)的時候,以及調(diào)用一個類的靜態(tài)方法的時候

2.使用java.lang.reflect包的方法對類進行反射調(diào)用的時候

3.當初始化一個類的時候,如果發(fā)現(xiàn)其父類還沒有進行過初始化

4.當虛擬機啟動時,用戶需要指定一個要執(zhí)行的主類(包含main()方法的那個類),虛擬機會先初始化這個主類。

5.當使用JDK 1.7的動態(tài)語言支持時,如果一個java.lang.invoke.MethodHandle實例最后的解析結果REF_getStatic、REF_putStatic、REF_invokeStatic的方法句柄,并且這個方法句柄所對應的類沒有進行過初始化,則需要先觸發(fā)其初始化。

Java虛擬機有預加載功能。類加載器并不需要等到某個類被"首次主動使用"時再加載它,JVM規(guī)范規(guī)定JVM可以預測加載某一個類,如果這個類出錯,但是應用程序沒有調(diào)用這個類, JVM也不會報錯;如果調(diào)用這個類的話,JVM才會報錯。

2.加載階段做了什么?

將類的class文件讀入到內(nèi)存,并創(chuàng)建一個java.lang.Class對象的過程,具體包括以下三個階段:

  • 通過一個類的全限定名獲取定義此類的二進制字節(jié)流
  • 將這個字節(jié)流所代表的靜態(tài)存儲結構(.class)轉化為方法區(qū)的運行時數(shù)據(jù)結構
  • 在Java堆中生成一個代表這個類的java.lang.Class對象,作為對方法區(qū)中這些數(shù)據(jù)的訪問入口

3.class文件信息都包括什么?

包括類的版本、字段、方法、接口等描述信息,以及常量池(constant pool table),用于存放編譯器生成的各種字面量(Literal)和符號引用(Symbolic References);每個class文件都有一個class常量池。當java文件被編譯成class文件之后,也就是會生成我上面所說的class常量池。

4.class常量池和運行時常量池區(qū)別是什么?

當類加載到內(nèi)存中后,jvm就會將class常量池中的內(nèi)容存放到運行時常量池中,運行時常量池每個類都有一個。class常量池中存的是字面量和符號引用,并不是對象的實例,而是對象的符號引用值。而經(jīng)過解析(resolve)之后,也就是把符號引用替換為直接引用,解析的過程會去查詢?nèi)肿址兀员WC運行時常量池所引用的字符串與全局字符串常量池中所引用的是一致的。

全局字符串池里的內(nèi)容是在類加載完成,經(jīng)過驗證,準備階段之后在堆中生成字符串對象實例,然后將該字符串對象實例的引用值存到string pool中(記住:string pool中存的是引用值而不是具體的實例對象,具體的實例對象是在堆中開辟的一塊空間存放的)。

5.驗證階段有什么用?

因為class文件可能會被中途改動,或者來自有惡意的編譯器,因此需要進行驗證,避免非法的class文件危害虛擬機自身的安全。

具體包括以下四個階段:

  • 文件格式驗證,包括版本號是否匹配,常量池中的常量類型,指向常量的索引值是否指向了不存在的常量或不符合類型的常量。
  • 元數(shù)據(jù)驗證,進行語義分析,包括是否有父類,是否可以繼承(final不允許繼承),子類是否實現(xiàn)了所有的抽象方法等
  • 字節(jié)碼驗證,最復雜的階段,通過數(shù)據(jù)流和控制流的分析,對類的方法體進行校驗分析,包括操作數(shù)棧使用時類型是否匹配,類型轉換是否正確等等。
  • 符號引用驗證,發(fā)生在虛擬機將符號引用轉化為直接引用的時候(在解析時發(fā)生),包括符號引用是否有對應類、方法和字段,是否可以被當前類訪問等。

6.驗證階段必須執(zhí)行嗎

在生產(chǎn)階段可以考慮關閉 -Xverify:none 以此來縮短類加載時間。

以上就是“Java類加載機制面試題的六個常見問題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內(nèi)容,可以關注動力節(jié)點Java官網(wǎng)。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 欧美 中文字幕 | 天天干狠狠 | 在线视频国产一区 | 日韩美女中文字幕 | 国产成人综合久久精品红 | 一级做a爰全过程免费视频 一级做a爰片鸭王 | 亚洲一区无码中文字幕 | 免费黄色福利视频 | 国产精品单位女同事在线 | 全午夜免费一级毛片 | 国产日韩精品欧美一区色 | 精品成人在线 | 一级做a爱片特黄在线观看yy | 午夜资源站 | 男女男在线观看视频网站 | 九九久久精品这里久久网 | y4480午夜66| 日韩中文字幕网站 | 国产手机视频 | 欧美xxx性| 狠狠色狠色综合曰曰 | 亚洲日本一区二区三区在线不卡 | 天堂视频在线免费观看 | 欧美在线视频第一页 | 国产 日韩 一区 | 成人网中文字幕色 | 欧美日韩在线一本卡 | 日韩三级免费 | 日日夜夜国产 | 国产欧美日韩精品a在线观看高清 | 中文字幕日韩精品在线 | 一本大道香蕉大无线视频 | 中文字幕一区二区三区乱码aⅴ | 黄色三级视频在线观看 | se婷婷| 玖玖成人 | 在线观看黄色片 | 国产成人a一在线观看 | 在线播放a | 成年网站在线 | 欧美精品束缚一区二区三区 |