我对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
是否存储在堆中?
请帮我!提前谢谢。
答案 0 :(得分:0)
你是对的。
更具体地说,j
位于堆中,因为它是A
类型对象的一部分,并且对象位于堆中。