Идет ли инициализированный массив Java на стек или куча?

void someMethod() {
  byte[] array = { 0, 0 };
}

Этот массив будет храниться в куче или в стеке?

8
задан Rikayan Bandyopadhyay 7 April 2014 в 13:39
поделиться

2 ответа

Вы можете думать , что это всегда происходит в куче.

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

В частности, представьте себе небольшое изменение:

byte[] someMethod() { 
    byte[] array = { 0, 0 };
    return array;
}

Если бы массив был размещен в стеке, на что должна ссылаться возвращенная ссылка?

18
ответ дан 5 December 2019 в 08:22
поделиться

Он будет храниться в куче

2
ответ дан 5 December 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: