当我创建一个新的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
答案 0 :(得分:2)
在Java中,类类型的变量是始终引用。如果一个类包含一个类型是另一个类的变量(而不是像int
那样的基本类型),那么内存中的对象数据将只包含一个指针。对象永远不会嵌入其他对象中。 (然而,原始类型是。)
(实际上,引用实际上不必存储为指针,它可能类似于保存在别处的指针表中的整数索引,以简化垃圾收集器查找所有对象的工作。具体细节取决于JVM的实现。但不管怎样,它都是“指针式的”,它指的是位于堆上其他位置的对象。)