Java - 存储在内存中的成员变量的引用在哪里?

时间:2018-05-07 06:17:40

标签: java memory jvm

我对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))存储在堆中
  3. 局部变量

    1. a并且它的值存储在堆栈中。
    2. b存储在堆栈中,但它引用的对象(new Integer(3))存储在堆中。
    3. 我的结论是否正确? 我最大的困惑在于第二点。 j是否存储在堆中? 请帮我!提前谢谢。

1 个答案:

答案 0 :(得分:0)

你是对的。

更具体地说,j位于堆中,因为它是A类型对象的一部分,并且对象位于堆中。