我知道在this post中也有一个类似的问题。但是,我仍然对java是否存在保留周期问题感到困惑,因为java也有WeakReference类。那么,它们是否有同样的用途呢?他们俩有什么区别?
发布于 2021-06-14 15:46:31
Java没有“保留周期问题”。
这个问题存在于使用引用计数的系统,而Java GC不使用。
因此,在Java中,WeakReference类与这些无关。这只是一种保持对某物的引用的方式,同时也不阻止它被垃圾收集。
换句话说,只要其他东西(强烈地)引用对象,就可以使用它来记住一个对象。
这个功能与weak关键字在Swift中所做的非常相似。但是,如上所述,引用周期并不会阻止在Java中收集对象,因此在这种特殊情况下不需要WeakReference。
This SO question列出了弱引用的一些实际用途,this question专门讨论了在Java环境中的使用。
https://stackoverflow.com/questions/67972919
复制相似问题