非解释语言是否可以拥有垃圾收集器。解释语言让解释器逐行执行程序,因此解释器也可以提供GC的运行时。但是,如果不在代码本身中构建GC,是否可以为任何其他语言使用垃圾收集器?
答案 0 :(得分:11)
垃圾收集只需要将指针变量标记为特殊方式,以便运行时可以识别它们并用于垃圾收集。它与解释/编译无关,而是需要特殊的运行时并为每个变量存储额外的数据。
答案 1 :(得分:6)
嗯,.NET语言(发送到IL-C#,VB.NET,MC ++等)不会被解释(特别是如果你使用NGEN) - 并且有完整的垃圾收集。
同样,Java。
答案 2 :(得分:5)
答案 3 :(得分:3)
对于编译语言的实际实现,在本例中为C和/或C ++,请参阅http://www.hpl.hp.com/personal/Hans_Boehm/gc/处的Boehm GC
答案 4 :(得分:3)
Haskell有垃圾收集,无论是编译为本机代码还是解释。
答案 5 :(得分:2)
新的C ++ 0x包含使垃圾收集实现更容易的功能。例如,见interview。
答案 6 :(得分:0)
是
带有智能指针实现的C ++会随着智能指针引用计数变为零而进行垃圾收集。
你有垃圾收集。你没有自己建造它。
答案 7 :(得分:0)
Objective-C 2现在有垃圾收集,并且还有可用于C ++的垃圾收集库。
我认为只要有语言允许你检查对象就可以遍历对象树。