我想将WeakReference
s 用作(android)位图缓存的一部分,以便能够检查何时不再使用位图。
我的缓存的最大大小小于 Java 堆空间。当一个新的位图溢出缓存时,它应该放弃不再需要的位图。
WeakReference
我的问题:什么时候返回 null的 get() 方法?
- 一旦不再有对该对象的强引用?(并且 GC 还没有发生)
- 或者当 GC 运行并确定它们不再是对该对象的强引用时?
如果 2. 是真的,那么我可能会遇到我的缓存可能会填满并且 GC 最近由于某种原因没有运行的情况。
然后,即使我在最后一次 GC 运行后已经放弃了引用,WeakReference#get()
仍然会返回该对象,并且我的缓存不会将其清除。