2012-04-18 88 views
0

我最近閱讀了關於根據Artima的JVM規範在JVM第二版中的內幕。其中一個章節提到了存儲在Java運行時中的類型,它表示:Java虛擬機:類型信息

類別爲java.lang.Class的實例由Java虛擬機爲其加載的每種類型創建。虛擬機必須以某種方式將對類型的Class實例的引用與方法區域中的類型數據相關聯。

我有點困惑,因爲我一直以爲Class文件所在的方法區域包含了類型信息。 Java存儲類型信息還有其他地方嗎?

回答

1

是的,正如它所說an instance of java.lang.Class已創建。這意味着代表類文件的對象被放置在堆上,以及方法區域中的Class文件。

這是在對象上調用getClass()時返回的Class對象。

+0

是的,但它表示它將REFERENCE與Class文件與類型信息相關聯。但類是類型信息,爲什麼它需要引用自身? – Bober02 2012-04-18 13:19:02

+0

創建的'Class'對象必須包含對方法區域中類數據的引用。兩個不同的實體。只有當需要信息時才能在兩者之間建立連接。該連接以編程方式不可見。 – Jivings 2012-04-18 13:21:35

+0

因此,當我們嘗試在Java中運行'instanceof'時,對象上的指針指向方法區域上的類型數據或類型堆上的單例'Class'對象? – Bober02 2012-04-18 14:14:50