弱引用都是关于垃圾回收的。一个 标准的
对象不会“消失”,直到所有对它的引用被切断,这就意味着所有的你的各种对象都对它的引用之前有垃圾收集会考虑垃圾被删除。
使用弱引用仅仅是因为您的对象被其他对象引用,并不一定意味着它不是垃圾。它仍然可以被GC拾取并从内存中删除。
例如:如果我的应用程序中有一堆Foo对象,则可能要使用Set来保存我周围所有Foo的中央记录。但是,当我的应用程序的其他部分通过删除对它的所有引用来删除Foo对象时,我不希望我的Set持有该对象的其余引用来防止其被垃圾回收!真的,我只是希望它从我的场景中消失。在这里,您将使用类似弱集(Java具有WeakHashMap)的方法,该方法使用对其成员的弱引用而不是“强”引用。
如果您希望对象时没有被垃圾回收,那么您在记账方面就犯了一个错误,那仍然是您忘记删除的引用。使用弱引用可以缓解这种记帐的痛苦,因为你不必对他们的担心保持一个对象“活着”,并取消垃圾收集,但你不
具备 使用它们。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)