Guile GCヒープサイズヒューリスティック:ライブロック物語

2025-05-26

Guileプロジェクトは、Noflベースの保守的なスキャン型ガベージコレクタを統合しています。現在、拡張可能なヒープポリシーを使用しており、ヒープサイズは、断片化を考慮するために乗数によって調整されます。しかし、深刻な断片化は、ヒープが予想サイズの2倍であっても、メモリ割り当ての失敗とデッドロックにつながる可能性があります。この記事では、乗数の増加、ヒープ構成の変更、Noflコレクタ用の空ブロックの予約など、いくつかの解決策を探っています。目標は、断片化を効率的に処理し、デッドロックを回避することです。

続きを読む
開発

ゼロから始めるガベージコレクタ:20年にわたる旅

2025-05-12

20年のプログラミング経験を持つプログラマーが、Immixガベージコレクションアルゴリズムを研究した後、Guile Schemeのために新しいガベージコレクタを実装することにしました。当初の目標は汎用的なメモリ管理インターフェースの作成でしたが、最終的には、mark-sweepコレクタのサイドテーブルをbump-pointer割り当てに利用するNoflという新しいガベージコレクタを開発しました。また、著者は自身の研究成果を学術会議に投稿した経験や、学術研究と産業界への考察も共有しています。

続きを読む
開発

世代別ガベージコレクションのパフォーマンスに関する不可解な結果

2025-02-09

著者は、世代別ガベージコレクションのパフォーマンス上の利点を検証するために実験を行いました。驚くべきことに、その結果は、様々なベンチマークにおいて、世代別ガベージコレクションの方が、ヒープ全体を対象としたガベージコレクションよりも時間がかかったことを示しています。この記事では、書き込みバリアのオーバーヘッド、ナーサリーサイズの選択、ベンチマークの代表性、コレクション頻度など、いくつかの可能性のある原因を探っています。著者は、根本原因を特定するためにはさらなる調査が必要だと結論付けています。

続きを読む