У меня есть вопрос о памяти JVM и я надеюсь получить помощь и руководство от всех.
Class A {
//memory variable
int i = 2;
Integer j = new Integer(3);
public void static main(){
//local variable
int a = 2;
Integer b = new Integer(3);
}
}
В приведенном выше коде я хочу знать, хранится ли ссылка на переменную-член в куче или стеке.
Что я думаю, я знаю
i
является переменной-членом и примитивной переменной.
j
является переменной-членом и ссылочной переменной.
a
является локальной переменной и примитивной переменной.
b
является локальной переменной и ссылочной переменной.
И мой вывод:
переменные-члены
i
и его значение сохраняется в куче
j
и объект, на который он ссылается (new Integer(3)
), сохраняется в куче
локальные переменные
a
и его значение сохраняется в стеке.
b
хранится в стеке, но объект, на который он ссылается (new Integer(3)
), хранится в куче.
Мой вывод верен?
Мое самое большое замешательство - второй момент. j
хранится в куче?
Пожалуйста, помогите мне! Заранее спасибо.