非解释语言可以有垃圾收集器吗?

时间:2009-05-06 10:22:02

标签: java language-agnostic garbage-collection interpreter

非解释语言是否可以拥有垃圾收集器。解释语言让解释器逐行执行程序,因此解释器也可以提供GC的运行时。但是,如果不在代码本身中构建GC,是否可以为任何其他语言使用垃圾收集器?

8 个答案:

答案 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 ++的垃圾收集库。

我认为只要有语言允许你检查对象就可以遍历对象树。