gpt4 book ai didi

java - 垃圾收集(本地引用)

转载 作者:行者123 更新时间:2023-11-29 09:58:42 24 4
gpt4 key购买 nike

我对 GC 在 Java 中的工作方式感到困惑。

下面是让我感到困惑的代码 fragment :

private Data data = new Data();

void main() {

for (int i = 0; i < 100 ; i++) {
MyThread thread = new MyThread(data);
thread.start();
}

System.gc();

// Long running process

}

class MyThread extends Thread {
private Data dataReference;

MyThread(Data data) {
dataReference = data;
}
}

在上面的示例中,如果 gc 在继续之前被调用(//长时间运行的过程)

  • 本地线程会被垃圾回收吗?

  • 或者 GC 会将它们(MyThread 本地引用)标记为 Activity 的,因为它持有对全局引用数据的引用?

最佳答案

MyThread 实例只有在它们完成后才会被垃圾回收(即它们的 run 方法完成)。 for 循环结束后,MyThread 的任何实例(其 run 方法已完成)都可能被垃圾回收(因为没有对它们的引用)。

事实上,MyThread 实例每个都持有对未被垃圾收集的 Data 实例的引用,这不会影响 MyThread< 的时间 实例有资格进行垃圾回收。

关于java - 垃圾收集(本地引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53984766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com