仅声明类类型的变量时的内存分配

时间:2016-02-04 16:40:54

标签: java

在Java中,当我们只声明类类型的变量时,只创建一个引用(不为该对象分配内存)。是否在堆上创建了某个空间的引用?或者如果我错了,那么当我们宣布变量时,内存中究竟会发生什么?

Test t; 

2 个答案:

答案 0 :(得分:8)

  

在Java中,当我们只声明一个类类型的变量时,只创建一个引用(没有为该对象分配内存)。

这是正确的。

  

是否将引用t保存在堆上创建空间?

答案取决于声明出现的背景。如果所述声明是对象的一部分(即t字段),那么将从堆中分配引用空间以及对象其余部分的空间包含该字段。否则,引用空间将在JVM的堆栈帧中分配。

答案 1 :(得分:0)

声明变量时:

Test t;

空间用于参考(固定金额,不取决于班级中的成员数量)。 实例化变量时,使用 new 关键字:

t = new Test();

然后在堆上创建变量的空间,t引用该空间。这必须足够大,以容纳Test的所有成员。