嵌套对象内存分配?

时间:2014-09-20 01:38:59

标签: java jvm

当我创建一个新的Object时,JVM会在堆上分配一个内存块,而不管可能出现的数据。它可能包含变量,它可能包含方法。我们称之为mainObject。我的问题是,如果有另一个对象;让我们调用它在这个mainObject类中定义的childObject将JVM在不同的内存位置分配一个新的内存块,并设置一些从mainObject到childObject的内部指针,或者它只在mainObject中定义childObject的内存位置。

主要课程详情

     Public class mainClass{
public mainCLass(childClass childclass)
    }

现在创建了这个主要类的对象

mainClass mainclass = new mainCLass(childclass2);

现在的问题是,在创建mainclass的时候,堆上发生了内存分配。该对象还具有在构造函数中传递的childClass子类。现在我的问题是这个子类对象是在哪里创建的。在与mainclass或其他内存位置相同的内存位置。如果仍有疑问,请告诉我。

的Tx

1 个答案:

答案 0 :(得分:2)

在Java中,类类型的变量是始终引用。如果一个类包含一个类型是另一个类的变量(而不是像int那样的基本类型),那么内存中的对象数据将只包含一个指针。对象永远不会嵌入其他对象中。 (然而,原始类型是。)

(实际上,引用实际上不必存储为指针,它可能类似于保存在别处的指针表中的整数索引,以简化垃圾收集器查找所有对象的工作。具体细节取决于JVM的实现。但不管怎样,它都是“指针式的”,它指的是位于堆上其他位置的对象。)