ReferenceQueue如何运作?以及如何在项目中使用它?
文档说:当WeakReference或SoftReference被清理后,它们将排入ReferenceQueue。这是做什么的?
答案 0 :(得分:0)
首先要了解ReferenceQueue,您需要了解强引用和弱引用之间的差异。这篇文章可以帮助您:https://community.oracle.com/blogs/enicholas/2006/05/04/understanding-weak-references
什么是ReferenceQueue?
非强引用一旦它们弱引用的堆对象没有任何强引用就开始返回null。所以非强引用的问题是你永远不知道它们什么时候开始返回null。 ReferenceQueue是Java提供的一项规定,用于帮助我们了解弱引用何时符合GC条件,如果我们真的想知道这一点。那应该怎么做呢?如果您在创建弱引用时提供了ReferenceQueue,那么当该弱引用符合GC条件时,它将被引入该ReferenceQueue,然后您可以在检查是否有任何弱引用已在ReferenceQueue中排队时继续轮询该ReferenceQueue。
这是一篇包含以下代码的好文章: http://learningviacode.blogspot.com/2014/02/reference-queues.html