language-design – 在实现解释器时,捎带宿主语言的垃圾收集器是好还是坏?

假设您正在使用GCed语言为GCed语言实现解释器.

在我看来,只要你对你的设计非常谨慎,你就可以免费收集垃圾.

这一般是怎么做的?有没有充分的理由不这样做?

最佳答案 语言和运行时是两回事.他们并没有真正相关恕我直言.

因此,如果您的现有运行时已经提供了GC,则必须有充分的理由使用另一个GC扩展运行时.在过去,操作系统内存分配缓慢且昂贵的时候,应用程序带来了自己的堆管理器,这些管理器可以更有效地处理小块数据.这是将另一个内存管理添加到现有运行时(或OS)的一个读取.但是,如果您正在谈论Java,.NET等等 – 那么对于手头的大多数任务来说,这些都应该是好的和有效的.

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

点赞