Kotlin中的“对象”是否会收集垃圾

时间:2019-01-05 14:01:30

标签: android object kotlin garbage-collection

如果我们有这样的 Object

object Repo { var activeMovies: ArrayList<Movie>? = null }

然后我们这样称呼它来分配值

Repo.activeMovies = movieList

实例化它的活动完成之后,它会收集垃圾吗?

我知道这可能是一个非常基本的问题,但是如果object输入科特林,我将无法理解生命周期。

1 个答案:

答案 0 :(得分:4)

如果我们创建这样的对象:

object Test {
    // some functions and properties
}

并将其反编译为 Java ,我们将看到下一个代码:

public final class Test {
    public static final Test INSTANCE;

   static {
      Test var0 = new Test();
      INSTANCE = var0;
   }
}

从反编译的代码中,我们可以看到object创建了一个 Singleton 。初始化发生在静态块上。在 Java 中,静态块在类加载时执行。 Test类的实例是在类加载器加载该类时创建的。这种方法可以保证延迟加载线程安全。单例对象的实例保存在该对象类内的静态字段中。因此,它不符合垃圾收集的条件。 Test Singleton ,其寿命与应用程序的寿命一样长。

以下是有关静态变量Android static object lifecyclestatic variable null when returning to the app的一些有用信息。