Java WeakReference 是否与 swift weak 关键字相同?

use*_*750 0 java garbage-collection retain-cycle

我知道在这篇文章中已经回答了一个类似的问题。但是,我仍然对 java 是否有保留循环问题感到困惑,因为 java 也有 WeakReference 类。那么,它们的目的是否相同?他们两个有什么区别?

Joa*_*uer 6

Java 没有“保留周期问题”。

对于使用 Java GC 不使用的引用计数的系统,存在此问题。

因此,在 Java 中,WeakReference类与这些无关。这只是一种保持对某物的引用的方法,同时也不会阻止它被垃圾收集

换句话说,只要其他东西(强烈)引用它,您就可以使用它来记住一个对象。

这个功能非常相似什么weak关键词呢斯威夫特。但是,如上所述,引用循环不会阻止在 Java 中收集对象,因此WeakReference在这种特定情况下不需要。

这个 SO 问题列出了弱引用的一些实际用途,这个问题讨论了专门在 Java/Android 环境中的用途。