gpt4 book ai didi

java - 如果仅从垃圾中引用一个对象,它就是垃圾吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:16 26 4
gpt4 key购买 nike

假设有一个类 A 的对象 a,它持有对类 B 的另一个对象 b 的引用。这是对 b 的唯一引用。所以现在,如果对 a 的所有引用都被删除,那么 a 就可以进行 GC 了。这是否意味着 b 也准备好进行垃圾收集了?因为,虽然 b 有一个引用(在 a 内部),但它是不可访问的,因为 a 是不可访问的。

那么这个场景究竟是如何运作的呢?我的意思是垃圾收集的顺序。

最佳答案

一旦对象无法从根访问,它将被收集。参见 this question了解 GC 根的解释。

假设可能无法到达该子图中的任何节点,将收集整个子图(如您所述)。

Java(和 .NET)使用标记和清除垃圾收集来处理此类问题。

基于引用计数的系统(例如 C++ 的 std::shared_ptr<T> )可能会在仍然无法访问的循环依赖项的情况下失败。这对于 Java/.NET GC 不是问题。

关于java - 如果仅从垃圾中引用一个对象,它就是垃圾吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17505261/

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