NOA DebuggerNOA Debugger
  • v1.7.0
  • v1.6.1
  • v1.5.0
  • v1.4.0
  • v1.3.0
  • v1.2.0
  • v1.1.1
  • v1.0.0
Demo
Contact
Buy
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • v1.7.0
  • v1.6.1
  • v1.5.0
  • v1.4.0
  • v1.3.0
  • v1.2.0
  • v1.1.1
  • v1.0.0
Demo
Contact
Buy
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • 日本語
  • English
  • NoaGCCollectCallbacks

NoaGCCollectCallbacks

NOA Debuggerが実行するガベージコレクションに関連するイベントを設定します。

NoaGCCollectCallbacksを継承したクラスをNoaProfilerに引き渡すことで、ガベージコレクションに関連するイベントをカスタマイズできます。

オーバーライド可能な要素

Methods

メソッド名説明
OnBeforeGCCollect()ガベージコレクション処理の前に実行するメソッドです。
OnAfterGCCollect()ガベージコレクション処理の後に実行するメソッドです。
NOA Debuggerのガベージコレクション処理を実行しなかった場合でもこのメソッドは実行します。

Properties

プロパティ名説明
IsAllowBaseGCCollectNOA Debuggerのガベージコレクション処理を実行するかを判断します。
デフォルトはtrueで、falseに変更した場合はガベージコレクション処理を実行しません。

関連する型

INoaGCCollectCallbacks

NoaGCCollectCallbacksのオーバーライド可能なメソッドとプロパティは、このインターフェースで定義しています。

カスタムクラスで複数のコールバックの定義を集約したい場合や、既存のカスタムクラスを継承しつつコールバック機能を追加したい場合は、NoaGCCollectCallbacksクラスの代わりにこのインターフェースを利用することで実現できます。

サンプルコード

#if NOA_DEBUGGER
using NoaDebugger;
using System;
using UnityEngine;

// NOA Debuggerのガベージコレクション処理前後にイベントを実行する場合の例
public class ExampleGCCollector : NoaGCCollectCallbacks
{
    // ガベージコレクション実行前後のメモリ使用量をログ出力する例
    public override void OnBeforeGCCollect()
    {
        Debug.Log($"Memory before GC: {GC.GetTotalMemory(false)} bytes");
    }

    public override void OnAfterGCCollect()
    {
        Debug.Log($"Memory after GC: {GC.GetTotalMemory(false)} bytes");
    }
}

// 独自のフラグでNOA Debuggerのガベージコレクション処理の実行有無を制御する場合の例
public class ExampleOriginalGCCollector : NoaGCCollectCallbacks
{
    bool isAllowBaseGCCollect = true;
    public override bool IsAllowBaseGCCollect => isAllowBaseGCCollect;

    // ガベージコレクションの実行に一定の間隔を設ける例
    float lastGCCollectTime = 0.0f;
    const float gcCollectInterval = 5.0f;

    public override void OnBeforeGCCollect()
    {
        float currentTime = Time.realtimeSinceStartup;
        if (currentTime - lastGCCollectTime < gcCollectInterval)
        {
            isAllowBaseGCCollect = false;
        }
        else
        {
            isAllowBaseGCCollect = true;
            lastGCCollectTime = currentTime;
        }
    }
}
#endif

リンク集

関連機能

  • Profilerについて

使用クラス

  • NoaProfiler