Oracle documentation將/jdk1.7.0/jre/lib/rt.jar描述爲用於java運行時的引導類,我很好奇它們在運行JDK而不是JRE時是否加載過,以及if那麼在運行時如何將這些替換爲熱點類呢?在jvm中加載java熱點類
例如rt.jar似乎沒有包含與hotspot/jdk/src/share/classes/java/util/Collections.java相對應的類,因此如果我將JDK6版本作爲JDK添加到eclipse中,通過在調試器中執行以下操作:
Collections.emptySet().iterator();
我得到對應的rt.jar /代碼這將創建一個新的迭代器實例java.util.Collections中,wheras熱點版本從src.zip哪些池空迭代似乎並不存在。
我的理解一直是,熱點代碼將在運行前/運行期間鏈接,因此我懷疑我剛剛錯過了位置,但是如果這不是真的,熱點代碼如何鏈接?
感謝您的詳細信息,你沒有說你在哪個版本的Java比較?我向你提供了Bootstrap Class Loader的參考資料,但由於我必須自己做研究才能完全回答我自己的問題,所以我已將其作爲答案發布。 – MilesHampson 2015-02-09 10:28:48
我比較了那些有jdk8u25的本地文件 – Arkantos 2015-02-09 15:52:02