Java - Где ссылка на переменную-член хранится в памяти? - PullRequest
0 голосов
/ 07 мая 2018

У меня есть вопрос о памяти 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 является локальной переменной и ссылочной переменной.

И мой вывод:

переменные-члены

  1. i и его значение сохраняется в куче
  2. j и объект, на который он ссылается (new Integer(3)), сохраняется в куче

локальные переменные

  1. a и его значение сохраняется в стеке.
  2. b хранится в стеке, но объект, на который он ссылается (new Integer(3)), хранится в куче.

Мой вывод верен? Мое самое большое замешательство - второй момент. j хранится в куче? Пожалуйста, помогите мне! Заранее спасибо.

1 Ответ

0 голосов
/ 07 мая 2018

Вы правы.

Точнее говоря, j находится в куче, потому что это часть объекта типа A, а объекты находятся в куче.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...