【问题标题】:are instance reference variables(object) with assigned objects instantly created on the heap?具有分配对象的实例引用变量(对象)是否立即在堆上创建?
【发布时间】:2017-07-07 12:51:38
【问题描述】:

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

public class Player {
     private Object object = new Object();
}

每当我创建一个新的 Player 实例时。

Player player = new Player();

据我所知,可能是错的,我对此很陌生。堆为实例原语变量分配内存并将它们存储在对象中。

如果它对分配给对象的实例引用变量做同样的事情,这不是立即创建一个新实例还是仅在调用引用变量时发生?

【问题讨论】:

标签: java


【解决方案1】:

如果我正确理解您的问题,实例化一个新的 Player 实例(在堆上)也会实例化一个新的 Object(在堆上),并且 Player 实例持有对 Object 实例的引用。 Java 不做“惰性”实例化。

【讨论】:

  • 所以基本上,这会占用不必要的内存,最好在需要时创建一个对象?
  • 始终创建封闭的实例。因此,如果您不需要实例,请不要创建它。
  • Java 实际上做了一种惰性实例化。
  • @Dave,是什么让实例化“不必要”?
  • @LewBloch 假设我只需要在某些情况下实例化这个 Object,每当实例化一个新 Player 时,它都会占用不必要的内存,对吧?
猜你喜欢
  • 1970-01-01
  • 2020-03-30
  • 2016-11-19
  • 1970-01-01
  • 2019-08-07
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 2014-08-08
相关资源
最近更新 更多