Hash “怎么说?”;使用快速相等、集合和映射实现FP语言……”;处理垃圾收集的技术?

Hash “怎么说?”;使用快速相等、集合和映射实现FP语言……”;处理垃圾收集的技术?,hash,functional-programming,garbage-collection,Hash,Functional Programming,Garbage Collection,提出了一种基于hash的函数式语言快速相等、集合和映射的实现方法。据我所知,在将哈希值插入映射时,它使用哈希值的地址作为其密钥。这样做的优点是,与O(N)标准相反,计算基本上任何值的散列键都是O(1)。但我不明白的是:垃圾收集后地图会发生什么?由于GC进程将导致每个值的地址发生更改,因此映射的配置将不正确。换句话说,不能保证addr(value)在程序的生命周期内是相同的 因为GC进程会导致每个值的地址发生变化 只有移动垃圾收集器才能做到这一点。当使用像mark和sweep这样的非移动算法时,所

提出了一种基于hash的函数式语言快速相等、集合和映射的实现方法。据我所知,在将哈希值插入映射时,它使用哈希值的地址作为其密钥。这样做的优点是,与
O(N)
标准相反,计算基本上任何值的散列键都是
O(1)
。但我不明白的是:垃圾收集后地图会发生什么?由于GC进程将导致每个值的地址发生更改,因此映射的配置将不正确。换句话说,不能保证
addr(value)
在程序的生命周期内是相同的

因为GC进程会导致每个值的地址发生变化

只有移动垃圾收集器才能做到这一点。当使用像mark和sweep这样的非移动算法时,所发生的一切就是在GC循环期间释放未使用的对象-使用的对象保持在它们所在的位置

移动垃圾收集器通常被认为比标记和清除更可取,但根据论文摘要“标记和清除在最大共享环境中变得更快”,第2.4.4节对此作了进一步扩展


本文还描述了一种使移动垃圾收集器工作的方法(通过为每个对象分配一个唯一的id,并使用该id来代替其地址),但认为这是不切实际的(第2.4.2节)。

本文关于垃圾收集的部分是否没有回答您的问题?不,这就是我问的原因。。。我理解大多数方法是如何失败的,但我不明白为什么mark and sweep应该解决这个问题。我想我错过了一些非常明显的东西,因为你评论了这一点,但不知何故,我无法集中注意力。。。如果你能说出来我会很高兴的!