【问题标题】:What happens if you assign a new class on an existing instance?如果在现有实例上分配一个新类会发生什么?
【发布时间】:2015-05-18 00:39:38
【问题描述】:

只是一个非常简单的问题,在 Java 中,如果我将我的类的一个实例设置为全局变量,例如:

MyClass mc = new MyClass();

如果我稍后在代码中为它分配了一个新的类实例:

mc = new MyClass();

类的旧实例会发生什么情况,它会导致内存泄漏吗?这是不好的做法吗?

干杯。

【问题讨论】:

  • Java 没有全局变量,仅供参考。
  • 根据下面的答案,这不是问题。旧值是垃圾收集的(假设没有其他东西引用它)。至于“坏习惯”,我认为最好分配一次变量并避免重新分配它 - 但这纯粹是为了可读性和减少错误。但在同样的情况下,重新分配变量是最干净的解决方案,因此这不是硬性规定。

标签: java android class


【解决方案1】:

第一个 MyClass 被垃圾回收删除,并且 mc 被分配为一个新的 MyClass,除非 MyClass 的第一个实例被另一个变量引用,在这种情况下垃圾回收不会破坏它。

【讨论】:

    【解决方案2】:

    这是托管内存的全部要点。完成后不需要手动清除或删除对象,除非它持有其他一些外部资源,如网络连接。 JVM(或者,在这种情况下,Android 运行时)跟踪对象,在它们不再被任何人使用时发出通知,并回收内存。

    【讨论】:

      猜你喜欢
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2015-11-29
      • 2017-10-16
      • 2014-07-07
      • 1970-01-01
      相关资源
      最近更新 更多