<分区>
在 Swift 中,非常强调强引用循环,以及避免它的不同方法。如果两个变量之间存在强引用循环,它们将永远保存在内存中,如果通过强引用循环将大图片或视频保存在内存中,会导致程序崩溃。
我只是想知道 Java 中是否存在这样的概念?是否有可能无意中创建类似于Java中强引用循环的东西?我有几个月的 Java 经验,但我从未听说过有人在 Java 中提到过这样的概念,尽管 Java 确实使用引用变量来指向对象。
<分区>
在 Swift 中,非常强调强引用循环,以及避免它的不同方法。如果两个变量之间存在强引用循环,它们将永远保存在内存中,如果通过强引用循环将大图片或视频保存在内存中,会导致程序崩溃。
我只是想知道 Java 中是否存在这样的概念?是否有可能无意中创建类似于Java中强引用循环的东西?我有几个月的 Java 经验,但我从未听说过有人在 Java 中提到过这样的概念,尽管 Java 确实使用引用变量来指向对象。
最佳答案
似乎 swift 使用“引用计数”来检测对象的活跃度:每个对象都有一个与之关联的计数器,如果创建对该对象的新引用,该计数器就会递增;如果对该对象的引用消失,该计数器就会递减。如果引用计数为零,则对象已死,这意味着不再有对它的引用。
另一方面,Java 使用“可达性”来衡量活跃度:只要存在从某些“运行代码”到对象的引用链,对象就是活跃的。
两种方法各有利弊:
关于java - Java 中是否有类似于 Swift 的强引用循环(或类似的东西)的概念?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39909781/