ReferenceQueue<Integer> queueObj = new ReferenceQueue<Integer>();
WeakReference<Integer> referenceObj = new WeakReference<Integer>(new Integer(1), queueObj);
我在上面这样理解,
- 首先,为new Integer(1)对象创建 WeakReference referenceObj对象。
- 其次,系统将referenceObj对象移动到queueObj 对象中。现在queueObj有referenceObj元素。
- 三、系统GC新的Integer(1)对象,并清除queueObj对象。现在queueObj是空的。
对吗?
编辑:
- 首先,为new Integer(1)对象创建 WeakReference referenceObj对象。
- 其次,系统将referenceObj对象移动到queueObj 对象中。现在queueObj具有referenceObj元素,新的 Integer(1)对象已被系统收集。
- 第三,一些程序检测queueObj 是否为空。如果没有,您知道收集了一些引用对象,您可以迭代queueObj来处理referenceObj。