MSDN:
弱引用对于使用大量内存的对象很有用,但是 如果它们被垃圾收集回收,可以很容易地重新创建。
和
当您使用弱引用时,应用程序仍然可以获得 强烈引用该对象,阻止它成为 集。但是,垃圾总是存在风险 收集器将在强引用之前首先到达对象 重新建立。
我的问题是:为什么可以轻松地重新创建WeakReference对象? GC发布后,与普通对象相比,可以轻松地重新创建吗?
答案 0 :(得分:5)
你误读了文字。什么时候说
弱引用对于使用大量内存的对象很有用,但如果它们被垃圾回收回收,则可以轻松地重新创建。
意味着
如果
你有一个使用大量内存的对象,但很容易 重新创建
THEN
对此对象的弱引用可能很有用
答案 1 :(得分:3)
没有区别,MSDN文档试图描述弱引用的用例,即弱引用应该与使用大量内存但同时使用的对象相关联时间很容易被重建。
弱引用不会阻止对象被垃圾回收,因此可以收集占用大量内存的对象,以便可以重用内存。但是,如果收集的对象很难重新创建使用弱引用的好处并且让对象被垃圾收集在使用该对象时丢失,并且因为收集了对象而需要重新创建。
答案 2 :(得分:0)
弱引用的主要正确用法是在引用是否可能有用的决定因素是其他人是否持有对同一事物的引用。这种情况的两个常见例子是:
在决定是否使用WeakReference
时,如果WeakReference
在其目标没有其他参考的情况下失效,则应该决定是否会感到高兴。如果有人希望WeakReference
在一段时间内保持有效,那就表明应该使用其他一些缓存机制。