垃圾回收機制
Crystal 終於可以開始將一些記憶體歸還給作業系統了!今天我們成功將 Boehm-Demers-Weiser 保守式垃圾回收器 整合到這個程式語言中。
雖然我們計劃在未來實作更適當且客製化的垃圾回收器,但這真的是一個讓這個程式語言更強健、更實用的良好起點。
為了讓這個回收器在 Crystal 中運作,我們必須確保所有已配置的區塊指標都已在記憶體中正確對齊。聯合體和類型階層使用緊湊結構,這使得某些指標對 GC「隱形」,因此許多仍在使用的區塊被解除配置,並導致所有東西都很容易崩潰。
一些快速測試反映了釋放一些記憶體的明顯好處。例如,samples/mandelbrot2.cr
以前需要大約 13MB 的記憶體才能執行。一旦啟用 GC,它僅使用不到 1MB 的記憶體。
還有很長的路要走,但是現在有了可用的記憶體管理器,我們可能會考慮開始在日常工作中針對一些非生產或關鍵工具使用 Crystal。