2014-09-20 82 views
-1

當我創建一個新的對象在JVM堆上分配,可能一起去的數據,無論一個內存塊。它可能包含變量,它可能包含方法。讓我們稱這個mainObject。我的問題是,如果有另一個對象;讓稱之爲childObject此Class mainObject的內部定義將在JVM在不同的存儲器位置,並設置從mainObject一些內部指針分配一個新的存儲塊來childObject或它將只限定內部mainObject childObject的存儲器位置。主類嵌套對象內存分配?

 Public class mainClass{ 
public mainCLass(childClass childclass) 
    } 

細節現在這個主類的對象被創建

mainClass mainclass = new mainCLass(childclass2); 

現在的問題是被創建的時候mainclass內存分配上堆發生。這個對象也有在構造函數中傳遞的childClass子類。現在我的問題是這個childclass對象在哪裏創建。在與主類或其他內存位置相同的內存位置。請讓我知道是否仍有疑問。

的Tx

+0

對象不能擁有它們內部的對象。 – immibis 2014-09-20 01:44:07

+0

請澄清你的「class」和「object」之間的詞彙,我很難理解你想說什麼。 – Dici 2014-09-20 01:44:41

+0

@Dici哪裏有人提過類? – immibis 2014-09-20 01:47:41

回答

2

在Java中,類類型的變量總是參考。如果一個類包含一個變量,其類型是另一個類(相對於原始類型像int),存儲器中的對象數據將僅包含一個指針。對象不會嵌入其他對象中。 (然而,原始類型是。)

(一個引用實際上並不需要存儲爲指針,從技術上說 - 它可能是像指向其他地方的指針表一樣的整數索引,以簡化垃圾找到所有的對象收集的工作。在細節均達到了JVM實現。但無論如何,這件事情「類指針」是指位於堆上別處的對象。)

+0

我明白了。這就是我想知道的.tx超音速回復 – jagvirsingh5 2014-09-20 02:13:35