Java динамическое выделение памяти? - PullRequest
6 голосов
/ 28 марта 2010

Почему инициализация объекта осуществляется с помощью ключевого слова new, называемого динамическим выделением памяти, так как для самого времени компиляции нам нужно знать объем памяти, необходимый для этого объекта.

Также, пожалуйста, объясните, что происходит, когда вы делаете ClassA object = new ClassA(); в куче и стеке .

Ответы [ 3 ]

9 голосов
/ 28 марта 2010

Все Объекты Java распределяются динамически. Вы всегда передаете ссылки на них. Так устроен язык. Когда вы делаете:

ClassA obj = new ClassA();

Затем объект размещается в куче и ссылка на него сохраняется в стеке (конечно, при условии, что это внутри метода). Это означает, что вы всегда можете передавать объекты, не беспокоясь о том, где они хранятся.

5 голосов
/ 28 марта 2010

Это динамично, так как вы не знаете , когда требуется распределение - вы распределяете по требованию.

Обратите внимание, что вы знаете, сколько памяти требуется этому объекту, но не знаете, сколько членов этого объекта требует . Это может быть определено только во время выполнения (например, массив переменного размера).

0 голосов
/ 18 июня 2015

Если у вас есть класс JMath и вы хотите получить все его объекты во время выполнения (динамическое распределение), тогда вы просто написали

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