Java WeakReference 和swift 弱关键字一样吗?

Is Java WeakReference the same as the swift weak keyword?

我知道 this post 中已经回答了类似的问题。但是,我仍然对 java 是否存在循环保留问题感到困惑,因为 java 也存在 WeakReference class。那么,它们是否服务于相同的目的?两者有什么区别?

Java 没有“保留循环问题”。

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

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

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

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

This SO question lists some practical uses for weak references and this question 专门讨论了在 Java/Android 环境中的使用。