我正在写一个静态编译的语言,我想支持垃圾收集。在设计它之前,我想知道在运行GC时我应该如何演绎?
是否应该在每16mb分配间隔之后? (经过足够的上升或在它分配16 + mb之前检查)。是否存在检查更早的情况,因此循环可以重用相同的内存以提高效率?等
答案 0 :(得分:2)
GC运行的最佳时间是“当程序剩余时间时”。例如,如果您有一个运行循环并且没有事件排队,则可能是运行GC的好时机。然后也许如果GC分配器注意到它需要向OS请求更多内存。我认为它还取决于GC设计,例如可以设计一个在自己的线程中运行的GC,并且不会中断程序,而不是通常的“停止世界”GC。
问题还在于,您是否想要实施一个仅用于学习的GC?或者你只是想要一个GC?在后一种情况下,我建议你研究一下Boehm GC。