【Unity】インクリメンタルGC を有効にする

DEVELOP, Unity

Unity 2019.1a10 より、GC 処理を段階的に小刻みに行う「インクリメンタルGC」が使える様になりました。これまでUnity に搭載されていた Boehm GC と呼ばれているものと比べると1フレームあたりの スパイク(カクつき)を抑えることが可能なものになります。

機能プレビュー:インクリメンタルガベージコレクション – Unity Technologies Blog

目次

確認バージョン

2019.3a10

使ってみる

Project Settings → Player → Configration の 「Use Incremental GC」を有効にする。これだけ。

インクリメンタルGCが有効かを確認する

GarbageCollector.isIncremental でインクリメンタルGCが有効なのかを確認できます。

if(GarbageCollector.isIncremental)
{
    Debug.Log(string.Format("インクリメンタルGCが有効です"));
}
else
{
    Debug.Log(string.Format("インクリメンタルGCが有効です"));
}

1フレーム当たりにGCに使って良い時間を指定する

GarbageCollector.incrementalTimeSliceNanoseconds = 3000000;

デフォルトは、3000000 ナノ秒(3ミリ秒)となっています。

まとめ

Unity のバージョンさえ上げることが出来れば比較的簡単に適用できるので、もしGCコンパクションによる スパイクに悩まされている場合は、試してみるのもアリだと思います。

Posted by kazupon