昔作ったAB製のアプリを最新のAB5βで動かすと、結構遅く感じます。速度に関する一番の原因は恐らくGC。マーク&スウィープはリアルタイム性を持ち合わせたいプログラムには少々不適合です。

そこで、世代別GCへと改良を行います。ABはアンマネージドベースのネイティブコードがベースになってそれぞれの言語機能を提供しているため、Java VMやCRL上ではサポートされるオブジェクトの暗黙的な移動が行えません。即ち、コピーGCやメモリコンパクションは行えないということになります。

こうなると、世代間GCへの移行は少々難しいのではないかと思われますが、そこは頭をひねって回避できそうです。メモリオブジェクトにマークをつけることで擬似的なコピー動作を生み出し、メモリインスタンスは不動のままコピーGCに似通った制御が可能です(本当の意味でのコンパクションは行えませんが、このご時世、それが致命的になる可能性は低いと仮定します)。

まずは、メモリオブジェクトの年齢制御、Old空間からNew空間への参照をリアルタイムに検地するライトバリア機構を導入することにします。

おそらく、この改良で結構な速度改善が得られるはず。GCによる回収処理で生じるスレッド停止時間は大幅に軽減され、体感できなくなることでしょう。