【Unity】アプリケーション実行中にメモリ不足を検知する
メモリ不足を検知するには、Application.lowMemory にコールバック関数を登録します。
サンプルコード
using System.Collections.Generic;
using UnityEngine;
public class Sample : MonoBehaviour
{
List<Texture2D> textures = new List<Texture2D>();
/// <summary>
/// メモリ不足時に呼ばれます
/// </summary>
public static void OnLowMemory()
{
Debug.Log("not enough memory !!!");
// メモリ開放
Resources.UnloadUnusedAssets();
}
/// <summary>
/// 有効時
/// </summary>
private void OnEnable()
{
// コールバック関数追加
Application.lowMemory += OnLowMemory;
}
/// <summary>
/// 無効時
/// </summary>
private void OnDisable()
{
// コールバック関数削除
Application.lowMemory -= OnLowMemory;
}
/// <summary>
/// 更新
/// </summary>
private void Update()
{
// テストコード。メモリ不足になるまでテクスチャを生成し続ける。
textures.Add(new Texture2D(256, 256));
}
}
サンプルではマイフレームテクスチャを生成してわざとメモリ不足を発生させています。メモリが少なくなると登録した OnLowMemory が呼ばれます。