gpt4 book ai didi

java - JVM 会垃圾收集内存中的孤立周期吗?

转载 作者:行者123 更新时间:2023-12-01 14:07:08 25 4
gpt4 key购买 nike

“孤立循环”可能并不完全是我想要描述的正确术语。这是我试图在代码中描述的示例:

public class Container {
private Container otherContainer;
public void setContainer(Container otherContainer) {
this.otherContainer = otherContainer;
}
}

public class Main {
public static void main(String[] args) {
doStuff();
}
public static void doStuff() {
Container c1 = new Container();
Container c2 = new Container();
c1.setContainer(c2);
c2.setContainer(c1);
//c1 and c2 now each hold a reference to each other,
//will they be garbage-collected once this method falls out of scope?
}
}

给定内存中包含循环的引用图,一旦代码无法访问该循环,JVM 是否可以垃圾收集内存引用?或者这是内存泄漏?

最佳答案

虽然这在理论上取决于 JVM 实现(JVM 实际上根本不需要实现垃圾收集,并且一些非常小的嵌入式垃圾收集器不需要),但所有现代 JVM 都使用标记和清除的变体,它从您的 main 方法开始,查找(标记)所有可访问的内容,并丢弃(清除)其他所有内容。将收集主程序无法访问的循环数据结构。

关于java - JVM 会垃圾收集内存中的孤立周期吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18819970/

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