"object" 在科特林中收集垃圾

does "object" in kotlin get garbage collected

如果我们有一个像这样的对象

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

然后我们这样调用它来赋值

Repo.activeMovies = movieList

在实例化它的 Activity 完成后,它是否得到 垃圾收集

我知道这可能是一个非常基本的问题,但如果 objectKotlin.

中输入,我无法理解生命周期

如果我们像这样创建一个对象:

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 中,静态块在 class 加载时间执行。 Test class 的实例是在 classloader 加载 class 的那一刻创建的。这种方法保证 延迟加载 线程安全 。单例对象的实例保存在该对象的 class 内的静态字段中。因此它不符合垃圾收集的条件。 Test 是一个 Singleton,其生命周期与应用程序的生命周期一样长。

这里有一些关于静态变量的有用信息Android static object lifecycle and static variable null when returning to the app