什么时候应该使用弱引用?
最近,我在WeakReferences中遇到了一段Java代码-
尽管在引入它们时会遇到它们,但我从未见过部署它们。这是应该常规使用的还是仅在遇到内存问题时才使用的东西?如果是后者,是否可以轻松地对其进行改造,或者代码需要进行认真的重构?一般的Java(或C#)程序员通常可以忽略它们吗?
过度热情地使用WR会造成任何损害吗?
回答:
弱引用都是关于垃圾回收的。一个 标准的
对象不会“消失”,直到所有对它的引用被切断,这就意味着所有的你的各种对象都对它的引用之前有垃圾收集会考虑垃圾被删除。
使用弱引用仅仅是因为您的对象被其他对象引用,并不一定意味着它不是垃圾。它仍然可以被GC拾取并从内存中删除。
例如:如果我的应用程序中有一堆Foo对象,则可能要使用Set来保存我周围所有Foo的中央记录。但是,当我的应用程序的其他部分通过删除对它的所有引用来删除Foo对象时,我不希望我的Set持有该对象的其余引用来防止其被垃圾回收!真的,我只是希望它从我的场景中消失。在这里,您将使用类似弱集(Java具有WeakHashMap)的方法,该方法使用对其成员的弱引用而不是“强”引用。
如果您希望对象时没有被垃圾回收,那么您在记账方面就犯了一个错误,那仍然是您忘记删除的引用。使用弱引用可以缓解这种记帐的痛苦,因为你不必对他们的担心保持一个对象“活着”,并取消垃圾收集,但你不
具备 使用它们。
以上是 什么时候应该使用弱引用? 的全部内容, 来源链接: utcz.com/qa/405949.html