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

Fan*_*Mex 3 android garbage-collection object kotlin

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

object Repo { var activeMovies: ArrayList<Movie>? = null }
Run Code Online (Sandbox Code Playgroud)

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

Repo.activeMovies = movieList
Run Code Online (Sandbox Code Playgroud)

实例化它的活动完成后,是否会收集垃圾

我知道这可能是一个非常基本的问题,但是如果使用Kotlin中object类型,我将无法理解其生命周期。

Ser*_*gey 8

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

object Test {
    // some functions and properties
}
Run Code Online (Sandbox Code Playgroud)

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

public final class Test {
    public static final Test INSTANCE;

   static {
      Test var0 = new Test();
      INSTANCE = var0;
   }
}
Run Code Online (Sandbox Code Playgroud)

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

以下是一些有关静态变量的有用信息,即Android静态对象生命周期返回到应用程序时的静态变量null