MSDN:
弱引用对于使用大量内存的对象很有用,但如果它们被垃圾收集回收,则可以很容易地重新创建它们。
和
当您使用弱引用时,应用程序仍然可以获得对该对象的强引用,这会阻止它被收集。但是,在重新建立强引用之前,垃圾收集器总是有可能首先到达对象。
我的问题是:为什么可以轻松地重新创建 WeakReference 对象?GC 释放后,与普通对象相比,是否可以轻松重新创建?
MSDN:
弱引用对于使用大量内存的对象很有用,但如果它们被垃圾收集回收,则可以很容易地重新创建它们。
和
当您使用弱引用时,应用程序仍然可以获得对该对象的强引用,这会阻止它被收集。但是,在重新建立强引用之前,垃圾收集器总是有可能首先到达对象。
我的问题是:为什么可以轻松地重新创建 WeakReference 对象?GC 释放后,与普通对象相比,是否可以轻松重新创建?
你误读了文字。当它说
弱引用对于使用大量内存的对象很有用,但如果它们被垃圾收集回收,则可以很容易地重新创建它们。
它的意思是
如果
您有一个使用大量内存但可以轻松重新创建的对象
然后
对该对象的弱引用可能很有用
没有区别,MSDN 文档试图描述弱引用的用例,即弱引用应该与使用大量内存但同时易于重新创建的对象相关联。
弱引用不会阻止对象被垃圾回收,因此可能会收集持有大量内存的对象,以便可以重用内存。但是,如果收集的对象重新创建使用弱引用的好处是昂贵的,并且在使用对象时让对象被垃圾收集的好处就会丢失,并且由于对象被收集而需要重新创建。
弱引用的主要正确使用是在决定引用是否可能有用的决定因素是其他人是否持有对同一事物的引用。这种情况的两个常见示例:
在决定是否使用 a时,一个人应该决定如果在没有其他引用对其目标的那一刻,它变得无效,WeakReference
是否会感到高兴。WeakReference
如果一个人想WeakReference
保持一段时间的有效性,这表明一个人可能应该使用其他一些缓存机制。