"object" 在科特林中收集垃圾
does "object" in kotlin get garbage collected
如果我们有一个像这样的对象
object Repo { var activeMovies: ArrayList<Movie>? = null }
然后我们这样调用它来赋值
Repo.activeMovies = movieList
在实例化它的 Activity 完成后,它是否得到 垃圾收集?
我知道这可能是一个非常基本的问题,但如果 object
在 Kotlin.
中输入,我无法理解生命周期
如果我们像这样创建一个对象:
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。
如果我们有一个像这样的对象
object Repo { var activeMovies: ArrayList<Movie>? = null }
然后我们这样调用它来赋值
Repo.activeMovies = movieList
在实例化它的 Activity 完成后,它是否得到 垃圾收集?
我知道这可能是一个非常基本的问题,但如果 object
在 Kotlin.
如果我们像这样创建一个对象:
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。