Объекты всегда хранятся в куче .Тем не менее, ссылка до per
будет сохранена в массиве локальных переменных , который хранится в фрейме , созданном для main(String[])
, который сохраняетсяв стеке .
Для получения дополнительной информации см .: Структура виртуальной машины Java .
Редактировать: Я узнал, что JVM действительно могут размещать объекты в стеке , выполняя escape-анализ .Более того, можно применить технику, называемую скалярная замена , в которой выделение объекта опущено, а поля объекта обрабатываются как локальные переменные.Переменные могут быть размещены в машинных регистрах.
Анализ побега по распределению стека был реализован виртуальными машинами HotSpot начиная с Java 6u14.Он включен по умолчанию начиная с Java 6u23Чтобы объект был размещен в стеке, он не должен выходить из исполняющего потока, тела метода или передаваться в качестве аргумента другому методу.