ニュース

Top  >   36. メモリ・発熱・クラッシュ  >   Q, GCのスパイクを減らすには?

Q, GCのスパイクを減らすには?

2026/03/20

メインコンテンツへスキップ
< すべてのカテゴリに戻る

A,結論

  • 毎フレームの文字列生成や List の作り直しを減らすと、GC スパイクを抑えやすくなります。
  • まずは Update 内の無駄を疑ってください。

原因 / 背景

  • C# では小さな一時確保が積み重なると、定期的な GC によりフレーム落ちが起きます。
  • VR はカクつきが体感に直結するため、GC 対策の効果が大きいです。

実装 / 手順

  1. Update 内で new を多用していないか確認します。
  2. 文字列連結や一時 List 作成を減らします。
  3. Profiler で GC Alloc を見ながら改善前後を比較します。

サンプルコード

using System.Text;
using UnityEngine;

public class GcFriendlyLogExample : MonoBehaviour
{
    private readonly StringBuilder builder = new StringBuilder();

    public void PrintPosition(Vector3 position)
    {
        builder.Clear();
        builder.Append("Pos: ");
        builder.Append(position.x.ToString("F2"));
        builder.Append(", ");
        builder.Append(position.y.ToString("F2"));
        builder.Append(", ");
        builder.Append(position.z.ToString("F2"));

        Debug.Log(builder.ToString());
    }
}

※ 実機確認が必要な項目は、Editor だけで判断せず対象デバイスでも必ず動作確認してください。

難易度:Level 3(中級)
対象プラットフォーム:PC,Android,VR,Visual Studio,Unity
関連キーワード:GC,メモリ,最適化

Level 3-5 向けバナー 1Level 3-5 向けバナー 2