我最近一直在阅读(基于堆栈的)虚拟机。我无法找到一个好的答案是:
垃圾收集器通常在什么级别实现?
考虑到这一点,我想出了以下两个选项:
这些都是有效的选择吗?如果是这样,通常在某些情况下使用哪一个?
答案 0 :(得分:3)
这两个选项都可用,但这取决于语言和目标。
在某些语言中,例如C,C ++(请参阅Boehm GC)和Rust(请参阅rust-gc),GC实现为库。在其他语言中,例如C#(请参阅CoreCLR和Mono),Java和Ruby(请参阅their repo),它在运行时环境中实现。
我确信还有更多的例子,也可能是反例,但我相信至少可以对哪些因素在决策中发挥作用进行一些观察: