1. 程式人生 > >深入拆解虛擬機器(六)JVM是如何執行方法呼叫的?(下)

深入拆解虛擬機器(六)JVM是如何執行方法呼叫的?(下)

虛方法呼叫

(1)Java中所有非私有例項方法呼叫都會被 編譯成invokevirtual指令,而介面方法呼叫會被編譯成invokevirtualface指令。這兩種指令,均屬於Java虛擬機器中的虛方法呼叫
(2)Java虛擬機器採用了一種用空間換時間的策略實現動態繫結。它為每個方法生成一張方法表,用以快速定位目標方法

(3)Java虛擬機器的動態繫結是通過方法表這一資料結構實現的。方法表中每一個重寫方法的索引值,與父類中方法表中被重寫的方法的索引值一致。在解析虛方法呼叫時,Java虛擬機器會記錄下所宣告的目標方法的索引值,並且在執行過程中根據這個索引值查詢具體的目標方法