gpt4 book ai didi

weak-references - 弱引用 - 它们有多有用?

转载 作者:行者123 更新时间:2023-12-03 07:57:42 29 4
gpt4 key购买 nike

所以我最近一直在考虑一些自动内存管理的想法——特别是,我一直在考虑实现一个基于引用计数的内存管理器。当然,每个人都知道循环引用会扼杀幼稚的引用计数。解决方案:弱引用。就我个人而言,我讨厌以这种方式使用弱引用(还有其他更直观的方法来处理这个问题,通过循环检测),但这让我开始思考:弱引用还有什么用处?

我认为它们存在一定是有原因的,尤其是在具有跟踪垃圾收集功能的语言中,它们不受循环引用陷阱的影响(C# 和 Java 是我熟悉的,Java 甚至有三种弱引用!)。然而,当我试图为它们找到一些可靠的用例时,我几乎只是得到了“使用它们来实现缓存”之类的想法(我在 SO 上见过几次)。我也不喜欢那样,因为它们依赖于这样一个事实,即跟踪 GC 可能不会在对象不再被强引用后立即收集它,除非在内存不足的情况下。这些类型的情况对于引用计数 GC 是绝对无效的,因为对象在不再被引用后立即被销毁(除非可能在循环的情况下)。

但这真的让我想知道:弱引用怎么可能有用?如果你不能指望它引用一个对象,而且它不需要像打破循环这样的事情,那么为什么要使用一个呢?

最佳答案

事件处理程序是弱引用的一个很好的用例。触发事件的对象需要对对象的引用以调用事件处理程序,但您通常不希望事件生产者的引用保持以防止事件使用者被 GC 处理。相反,您希望事件生产者有一个弱引用,然后它负责检查被引用的对象是否仍然存在。

关于weak-references - 弱引用 - 它们有多有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136620/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com