void someMethod() {
byte[] array = { 0, 0 };
}
Этот массив будет храниться в куче или в стеке?
Вы можете думать , что это всегда происходит в куче.
Я считаю, что некоторые интеллектуальные виртуальные машины могут размещать объекты в стеке, если они могут обнаружить, что это безопасно, но концептуально это находится в куче. В частности, все типы массивов являются ссылочными типами (даже если тип элемента является примитивным), поэтому переменная array
(которая находится в стеке) является просто ссылкой на объект, а объекты обычно переходят в куча.
В частности, представьте себе небольшое изменение:
byte[] someMethod() {
byte[] array = { 0, 0 };
return array;
}
Если бы массив был размещен в стеке, на что должна ссылаться возвращенная ссылка?