【问题标题】:does "object" in kotlin get garbage collectedkotlin 中的“对象”是否会收集垃圾
【发布时间】:2019-01-05 14:01:29
【问题描述】:

如果我们有这样的对象

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

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

Repo.activeMovies = movieList

在实例化它的 Activity 完成后,它会得到 Garbage Collected 吗?

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

【问题讨论】:

    标签: android kotlin object garbage-collection singleton


    【解决方案1】:

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

    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 的有用信息。

    【讨论】:

    • 太棒了。感谢您的解释。确实很有帮助。
    猜你喜欢
    • 2012-12-20
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多