跳至内容
GitHub 代码库 论坛 RSS 新闻源

垃圾回收器

Juan Wajnerman

最终,Crystal 将开始将一些内存返还给操作系统!今天,我们成功地将 Boehm-Demers-Weiser 保守式垃圾回收器 集成到语言中。

虽然我们计划在未来实现一个更合适和自定义的垃圾回收器,但这对于使语言更加健壮和易用来说是一个非常好的起点。

为了使该回收器与 Crystal 协同工作,我们必须确保所有分配的块指针都已正确 在内存中对齐。联合和类型层次结构使用的是打包结构,这使得一些指针对 GC “不可见”,因此许多仍在使用的块被释放,从而导致程序很容易崩溃。

一些快速测试反映了释放一些内存带来的明显好处。例如,samples/mandelbrot2.cr 以前需要大约 13 MB 的内存才能运行。启用 GC 后,它只使用不到 1 MB 的内存。

还有很长的路要走,但现在有了工作内存管理器,我们可以考虑开始 使用 Crystal 来开发我们日常工作中的一些非生产或非关键工具