十二:Class文件常量池

Java代碼在進行Javac編譯的時候,並不像C和C++那樣有“連接”這一步驟,而是在虛擬機加載 Class文件的時候進行動態連接

也就是說,在 Class文件中不會保存各個方法、字段的最終內存佈局信息,因此這些字段、方法的符號引用不經過運行期轉換的話無法得到真正的內存入口地址,也就無法直接被虛擬機使用

當虛擬機運行時,需要從常量池獲得對應的符號引用,再在類創建時或運行時解析、翻譯到具體的內存地址之中(這個階段即是連接的解析階段)

常量池中的內容在解析之後存放在方法區(?)

 

示例源碼: 完整的反編譯文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章