符號引用和直接引用

在JVM的類加載過程中,在解析階段,Java虛擬機會把類的二級制數據中的符號引用替換為直接引用臭家。

符號引用

符號引用以一組符號來描述所引用的目標疲陕,符號可以是任何形式的字面量方淤,只要使用時能夠無歧義的定位到目標即可。例如蹄殃,在Class文件中它以CONSTANT_Class_info携茂、CONSTANT_Fieldref_info、CONSTANT_Methodref_info等類型的常量出現诅岩。符號引用與虛擬機的內存布局無關讳苦,引用的目標并不一定加載到內存中带膜。在Java中,一個java類將會編譯成一個class文件鸳谜。在編譯時膝藕,java類并不知道所引用的類的實際地址,因此只能使用符號引用來代替咐扭。比如org.simple.People類引用了org.simple.Language類芭挽,在編譯時People類并不知道Language類的實際內存地址,因此只能使用符號org.simple.Language(實際中是由類似于CONSTANT_Class_info的常量來表示的)來表示Language類的地址蝗肪。各種虛擬機實現的內存布局可能有所不同袜爪,但是它們能接受的符號引用都是一致的,因為符號引用的字面量形式明確定義在Java虛擬機規(guī)范的Class文件格式中薛闪。


直接引用

直接引用是和虛擬機的布局相關的辛馆,同一個符號引用在不同的虛擬機實例上翻譯出來的直接引用一般不會相同。如果有了直接引用豁延,那引用的目標必定已經被加載入內存中了昙篙。

直接引用可以有不同的實現方式:

  • 直接指向目標的指針(比如,指向“類型”【Class對象】诱咏、類變量瓢对、類方法的直接引用可能是指向方法區(qū)的指針)
  • 相對偏移量(比如,指向實例變量胰苏、實例方法的直接引用都是偏移量)
  • 一個能間接定位到目標的句柄
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末硕蛹,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子硕并,更是在濱河造成了極大的恐慌法焰,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倔毙,死亡現場離奇詭異埃仪,居然都是意外死亡,警方通過查閱死者的電腦和手機陕赃,發(fā)現死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門卵蛉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人么库,你說我怎么就攤上這事傻丝。” “怎么了诉儒?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵葡缰,是天一觀的道長。 經常有香客問我,道長泛释,這世上最難降的妖魔是什么滤愕? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮怜校,結果婚禮上间影,老公的妹妹穿的比我還像新娘。我一直安慰自己茄茁,他們只是感情好宇智,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胰丁,像睡著了一般随橘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锦庸,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天机蔗,我揣著相機與錄音,去河邊找鬼甘萧。 笑死萝嘁,一個胖子當著我的面吹牛,可吹牛的內容都是我干的扬卷。 我是一名探鬼主播牙言,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼怪得!你這毒婦竟也來了咱枉?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤徒恋,失蹤者是張志新(化名)和其女友劉穎蚕断,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體入挣,經...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡亿乳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了径筏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葛假。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖滋恬,靈堂內的尸體忽然破棺而出聊训,到底是詐尸還是另有隱情,我是刑警寧澤夷恍,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布魔眨,位于F島的核電站媳维,受9級特大地震影響酿雪,放射性物質發(fā)生泄漏遏暴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一指黎、第九天 我趴在偏房一處隱蔽的房頂上張望朋凉。 院中可真熱鬧,春花似錦醋安、人聲如沸杂彭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亲怠。三九已至,卻和暖如春柠辞,著一層夾襖步出監(jiān)牢的瞬間团秽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工叭首, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留习勤,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓焙格,卻偏偏與公主長得像图毕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子眷唉,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內容

  • 虛擬機把描述類的數據從Class文件加載到內存予颤, 并對數據進行校驗、轉換解析和初始化冬阳, 最終形成可以被虛擬機直接使...
    好好學習Sun閱讀 1,188評論 0 3
  • 代碼編譯的結果從本地機器碼轉變?yōu)樽止?jié)碼荣瑟,是存儲格式發(fā)展的一小步,確實編譯語言發(fā)展的一大步摩泪。 虛擬機把描述類的數據從...
    胡二囧閱讀 945評論 0 0
  • ?每一個class文件都對應著唯一一個類或者接口的定義信息笆焰,但是相對地,類或者接口并不一定都必須定義在文件里(比如...
    SunnyMore閱讀 6,057評論 0 1
  • 此文為我在學習《深入理解Java虛擬機:JVM高級特性與最佳實踐》時所做的筆記见坑,把我認為是重點嚷掠、面試時可能會被問到...
    CyanStone閱讀 1,150評論 0 3
  • 莫顏真心無奈,到底是老天想幫她一把送三個幫手來呢還是戲弄于她送三個大麻煩呢荞驴。既然收了就安心用著吧不皆。看著眼前的三個人...
    a280efcec0c7閱讀 328評論 0 1