[UE4] Memory Insightsを使用したメモリトラッキング


1. はじめに

[検証バージョン:UE4.26.0 Preview]
 UE4.26でBetaとして追加されるMemory Insightsを使用したメモリトラッキング方法について説明します。

2. Memory Insightsの特徴

ゲーム中に使用しているメモリをトラッキングできるツールで、主に以下のような特徴があります。

[特徴]
 ・長時間のメモリトラッキングが可能
 ・計測のコストは軽量でゲーム中の動作に及ぼす影響もそこまで大きくない
 ・カテゴリ別(LLMタグ毎)にトラッキングすることが可能
 ・メモリの使用量や傾向は分かるが、細かいメモリが確保されている箇所までは分からない
 ・メモリの計測はゲーム起動時から終了時までに限定される
 ・Debug/Developmentビルドで使用可能、Test/Shippingビルドは不可

3. Memory Insightsの使い方

Memory InsightsはUnreal Insightsの機能の一部です。
よって同じような"trace"によってMemory Insightsのチャネル"memory"を指定するだけです。

[キャプチャ方法]
① アプリケーション起動前にUnreal Insightsを起動
② アプリケーションの起動引数に以下のパラメータを追加してアプリケーションを起動

-trace=memory

後はアプリケーションを終了して、Unreal Insightsのトレースを開くだけです。
長期で計測する場合は、コンソールコマンドの"quit"で終了させるなどを仕込んでおくと良いです。

4. Memory InsightsのUI

Memory Insightは以下のようなUIがあります。
画面左はトラッキングしたグラフがカテゴリ別に表示されています。ここを見てメモリの使用状況を確認したり、傾向をチェックします。

画面右にはLLMタグ毎の設定ができる表示があります。

名称 説明
Trackerタブ グラフの表示を[プラットフォームタグ]/[全タグ]を切り替えます
Group byタブ グラフの表示を行うタグの検索用グループを表示します
✕,+ボタン グラフの表示を[全タグ非表示]/[全タグ表示]を切り替えます
Load XML...ボタン グラフとして読み込む.xmlファイルを指定します
↕S,↕M,↕Lボタン グラフの表示領域をそれぞれS,M,Lのサイズ指定で整列します

例) ↕S

例) ↕M

5. メモリトラッキング

UIの右側のグラフの傾向を見て、特定のタグが増加傾向にある場合、そのタグでリークが起きていることを確認します。下の図では"Meshes"のタグが増加傾向にあるのでリークの可能性があります。

Memory Insightsでは使用状況のみ計測できますが、「どこで確保されたメモリが漏れているのか」までを特定することはできません。更に調べる場合には、以下のような方法によって実際のどこで確保したメモリが解放されていないかを調べることになります。

[UE4] Malloc Profiler/Memory Profiler2を使用したメモリトラッキング
[UE4] MemProを使用したメモリトラッキング
[UE4] MallocLeakReporterを使用したメモリトラッキング

6. まとめ

Memory Insightsを使うとメモリの使用状況を簡単に調べる事ができます。
定期的にメモリを調べたり、Unreal Insightsでパフォーマンスを調べたい時に併用するなど、手軽に使っていきましょう。