如果您要设计一种具有自动内存管理功能的编程语言,那么使用引用计数是否可以提供确定性保证,而垃圾收集器是不可能做到的?
对于功能性语言还是命令性语言,这个问题会有不同的答案吗?
最佳答案
保证一词很重要。这是可以为您提供引用计数的保证:
使用引用计数无法保证以下几点:
现在有一些实时垃圾收集器为暂停时间提供了非常有趣的保证,并且在最近5年中,引用计数和垃圾收集方面都有了非常有趣的发展。在我作为一个知情的局外人那里,没有明显的赢家。
IBM的David Bacon和Technion的Erez Petrank进行了一些有关引用计数的最新最佳工作。如果您想学习复杂的现代引用计数系统可以做什么,请查阅他们的论文。除其他外,他们正在以惊人的方式使用多个处理器。
有关更一般的内存管理和实时保证的信息,请查看International Symposium on Memory Management。
因为您询问担保问题,所以没有。但是对于内存管理而言,对于命令性语言(很多突变但分配率低),不纯功能语言(几乎没有任何突变但分配率高)和纯懒惰的功能语言(很多),性能折衷却大不相同。突变(所有这些都认为正在更新)和较高的分配率)。