java动态内存分配?

时间:2010-03-28 11:51:57

标签: java memory-management instantiation

为什么对象初始化使用new关键字称为动态内存分配,因为编译时本身我们需要知道该对象所需的内存。

另请说明在堆栈中执行ClassA object = new ClassA();时会发生什么。

3 个答案:

答案 0 :(得分:9)

动态分配所有 Java对象。你总是传递对它们的引用。这就是语言的设计方式。当你这样做时:

ClassA obj = new ClassA();

然后在堆上分配对象,并且对它的引用存储在堆栈中(当然,假设它在方法内)。这意味着您可以随时传递对象,而不必担心存储它们的位置。

答案 1 :(得分:5)

它是动态的,因为你不知道何时需要分配 - 你根据需求分配。

另请注意,您知道该对象需要多少内存,但不知道该对象的成员需要多少。这可能只能在运行时确定(例如可变大小的数组)。

答案 2 :(得分:0)

如果你有一个JMath的类,并且想要在运行时获得所有对象(动态分配),那么你刚写了

ArrayList<JMath> J = new ArrayList<JMath> ();