4

假设您正在使用 GCed 语言实现 GCed 语言的解释器。在我看来,只要您对自己的设计相当谨慎,您就可以免费获得垃圾收集。

这通常是如何完成的?有充分的理由不这样做吗?

4

2 回答 2

2

语言和运行时是两个不同的东西。他们并不是真正相关的恕我直言。

因此,如果您现有的运行时已经提供了 GC,则必须有充分的理由使用另一个 GC 来扩展运行时。在过去,当操作系统中的内存分配缓慢且昂贵时,应用程序带来了自己的堆管理器,这些管理器在处理小块数据时更有效。这是为现有运行时(或操作系统)添加另一个内存管理的一个读物。但是,如果您在谈论 Java、.NET 或其他语言 - 对于手头的大多数任务,它们应该足够好并且足够高效。

但是,您可能希望为内存和对象管理任务(和其他)创建适当的接口/API,以便稍后可以在另一个主机运行时上实现您的语言(“来宾”)运行时。

于 2010-02-01T19:42:39.413 回答
0

对于解释器,使用主机 GC(恕我直言)应该没有问题,尤其是在开始时。与往常一样,他们的目标应该是让某些东西正常工作,然后让它正常工作,然后让它快速运行。对于目标是小语言的领域特定语言 (DSL) 尤其如此。对于这些,实施完整的 GC 将是矫枉过正。

于 2010-02-01T20:26:55.627 回答