代码之家  ›  专栏  ›  技术社区  ›  Mark Bolusmjak

在实现解释器时,背负宿主语言的垃圾收集器是好是坏?

  •  4
  • Mark Bolusmjak  · 技术社区  · 14 年前

    假设您正在使用GCED语言为GCED语言实现解释程序。 在我看来,只要你对你的设计相当谨慎,你就可以免费得到垃圾收集。

    这通常是怎么做的吗?有没有充分的理由不这样做?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Lucero    14 年前

    语言和运行时是两种不同的东西。他们不是真正的亲戚。

    因此,如果您现有的运行时已经提供了一个GC,那么一定有充分的理由用另一个GC扩展运行时。在操作系统内存分配缓慢且昂贵的过去,应用程序自带了堆管理器,在处理小数据块时效率更高。这是一个用于向现有运行时(或操作系统)添加另一个内存管理的读数。但是如果你说的是Java.net之类的话,那么对于大多数手头的任务来说,这些都应该是好的和有效率的。

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

        2
  •  0
  •   Joel    14 年前

    对于解释器来说,使用主机gc、imho应该没有问题,尤其是在一开始。和往常一样,他们的目标应该是让一些东西工作,然后让它正常工作,然后让它快速。对于特定于领域的语言(DSL),这一点尤其适用,因为该语言的目标是一种小型语言。对于这些,实现一个完整的GC将是多余的。