Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否立即在堆上创建具有指定对象的实例引用变量(对象)?_Java - Fatal编程技术网

Java 是否立即在堆上创建具有指定对象的实例引用变量(对象)?

Java 是否立即在堆上创建具有指定对象的实例引用变量(对象)?,java,Java,假设我们有一个实例引用变量分配给一个对象 public class Player { private Object object = new Object(); } 每当我创建一个新的播放器实例时 Player player = new Player(); 据我所知,可能是错的,我对这一点还很陌生。堆为实例原语变量分配内存,并将其存储在对象中 如果它对分配给对象的实例引用变量执行相同的操作,这不是会立即创建一个新实例,还是只在调用引用变量时才会发生?如果我正确理解您的问题,实例化一

假设我们有一个实例引用变量分配给一个对象

public class Player {
     private Object object = new Object();
}
每当我创建一个新的播放器实例时

Player player = new Player();
据我所知,可能是错的,我对这一点还很陌生。堆为实例原语变量分配内存,并将其存储在对象中



如果它对分配给对象的实例引用变量执行相同的操作,这不是会立即创建一个新实例,还是只在调用引用变量时才会发生?

如果我正确理解您的问题,实例化一个新的播放器实例(在堆上)也会实例化一个新对象(在堆上),播放器实例保存对对象实例的引用。Java不会进行“惰性”实例化。

如果我正确理解了您的问题,那么实例化一个新的播放器实例(在堆上)也会实例化一个新对象(在堆上),播放器实例持有对该对象实例的引用。Java不进行“惰性”实例化。

在Java中,对象存储在堆中,指针(位置地址)被分配到堆栈中的一个位置。Java为实例分配内存,一旦它看到“新”关键字,引用就会用容器对象更新。有关的详细信息,请参阅。简而言之,这取决于JVM以及escape分析是否允许在堆栈上进行分配。我将阅读@sanojmathew,谢谢!我不是说局部变量Njol,只是不确定对象是否是在创建类的新实例时创建的(分配的实例引用属于该类)@JobinJohnson:不,这太简单了。特别是,
object
字段(作为对象的一部分)位于堆上,而不是堆栈上。在java中,对象存储在堆中,指针(位置地址)被分配到堆栈中的一个位置。java为实例分配内存,一旦它看到“new”关键字,引用将使用容器对象更新。有关的详细信息,请参阅。简而言之,这取决于JVM以及escape分析是否允许在堆栈上进行分配。我将阅读@sanojmathew,谢谢!我不是说局部变量Njol,只是不确定对象是否是在创建类的新实例时创建的(分配的实例引用属于该类)@JobinJohnson:不,这太简单了。特别是,
object
字段(因为它是对象的一部分)位于堆上,而不是堆栈上。因此,基本上,这会占用不必要的内存,最好在需要时创建一个对象?始终会创建封闭的实例。所以,如果你不需要实例,就不要创建它。Java实际上是一种惰性实例化的形式。@Dave,是什么让实例化“不必要”@LewBloch比方说,我只是要求在某些情况下实例化这个
对象
,每当一个新玩家被实例化时,让它实例化会占用不必要的内存,对吗?所以基本上,这会占用不必要的内存,最好是在需要时创建一个对象?总是创建封闭的实例。所以,如果你不需要实例,就不要创建它。Java实际上是一种惰性实例化的形式。@Dave,是什么让实例化“不必要”@LewBloch比方说,我只是要求在某些情况下实例化这个
对象
,每当一个新玩家被实例化时,让它实例化会占用不必要的内存,对吗?