【Unity】インクリメンタルGC を有効にする
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コンパクションによる スパイクに悩まされている場合は、試してみるのもアリだと思います。