一、句柄訪問方式:
使用句柄訪問對象,會在堆中開辟一塊內存作為句柄池,句柄中儲存了對象實例數據(屬性值結構體)的內存地址,訪問類型數據的內存地址(類信息,方法類型信息),
對象實例數據一般也在heap中開辟,類型數據一般儲存在方法區中。使用句柄訪問的好處是句柄中儲存的是穩定的對象地址,當對象被移動時候,只需要更新句柄中的對象實例部分的值即可,句柄本身不用被移動修改。
二、指針訪問方式:
直接指針訪問方式指reference中直接儲存對象在heap中的內存地址,但對應的類型數據訪問地址需要在實例中存儲,使用直接指針的好處相對於句柄來講,少了一次指針定位時間的開銷,缺點是,當對象被移動時(如進行GC后的內存重新排列),對象的引用(reference)也需要同步更新。
三、HotSpot虛擬機使用的是直接指針的形式訪問對象