Memory Profilerは、メモリ使用状況を詳細に確認し、最適化を行うために非常に便利なツールです。
1. Memory Profilerのインストール
手順
- Unity Hubを開き、使用したいプロジェクトを選択します。
- 上部のメニューから、「Window」 -> 「Package Manager」を選択します。
- パッケージマネージャーで、Unity Registryの項目を選び、「Memory Profiler」を検索します。
- Memory Profilerパッケージが表示されたら、インストールボタンをクリックします。
- インストールが完了したら、「Window」 -> 「Analysis」 -> 「Memory Profiler」を選択します。
2. Memory Profilerの基本的な使い方
2.1. メモリスナップショットを取得する
Memory Profilerを使用する前に、メモリの状態をスナップショットとしてキャプチャします。
- Memory Profilerウィンドウが開いたら、ウィンドウの右上にある「Take Sample」ボタンをクリックします。
- これにより、現在のメモリ状態がスナップショットとしてキャプチャされます。スナップショットは保存され、メモリの各領域についての詳 細な情報を確認できます。
2.2. メモリスナップショットを表示する
スナップショットを取得した後は、その内容を確認できます。
- スナップショットが成功したら、左側にスナップショットがリストとして表示されます。
- キャプチャしたスナップショットをクリックすると、右側にそのスナップショットの詳細なメモリ使用状況が表示されます。
3. メモリの確認
-
Managed Memory:
C#コード(Unityのスクリプトなど)によって使用されるメモリ。通常、ガベージコレクション(GC)が管理しています。
Managed Heapと呼ばれることもあり、Unityではオブジェクト生成の際に自動的にメモリが割り当てられ、使用しなくなるとGCが回収します。 -
Untracked Memory:
Unityによって直接管理されていない、あるいはプロファイラーでトラッキングできないメモリ領域。
外部ライブラリやUnityの内部機能が使用するメモリが含まれることがあります。 -
Graphics Memory:
GPUメモリ(VRAM)ではなく、CPUメモリ(RAM)に関連するグラフィックリソース(例えばテクスチャ、メッシュデータなど)の消費を示しています。これにはシェーダーやその他のビジュアル関連のメモ リが含まれます。 -
Excutables & Mapped Memory:
Unityエディタやそのプラグイン、ネイティブコード(C++など)によって使用されるメモリ。 -
Native Memory:
ネイティブコード(C++など)によって使用されるメモリ領域で、Unityエンジン自体やプラグインが利用するメモリです。 -
TotalResident Memory:
メモリ上に現在ロードされているデータの量。実際に使用中のメモリの「サイズ」です。
これらの情報は、物理メモリ(RAM)の使用状況を示しており、GPUメモリ(VRAM)ではありません。つまり、これらはコンピュータのメインメモリ(RAM)の消費をモニターしています。
例
HDRPで新規プロジェクトを立ち上げた時のメモリ例
All of Memory
untracked : 1.83GB
Managed : 1.59GB
Graphics : 1.36GB
Excutables & Mapped : 1.12GB
Native : 0.70GB
Standard Pipelineで新規プロジェクトを立ち上げた時のメモリ例
untracked 1.62GB Managed 0.9GB Graphics 436.7GB Excutables & Mapped 0.96GB Native 500.5MB TotalResident 0.75GB
おまけ
・Windowsのタスクマネージャー
Windowsのタスクマネージャは、コンピュータで動作しているプロセスやアプリケーションを監視・管理するためのツールです。タスクの強制終了やシステムのリソース使用状況を確認するなど、幅広い機能があります。
1. タスクマネージャの起動方法
タスクマネージャを起動するには、以下の方法があります。
- Ctrl + Shift + Esc:このキーボードショートカットで、すぐにタスクマネージャが起動します。
- Ctrl + Alt + Delete を押 し、「タスクマネージャ」を選択。
- タスクバーを右クリックし、「タスクマネージャ」を選択。
2. タスクマネージャの基本タブとその機能
プロセス タブ
現在実行中のアプリケーションとバックグラウンドプロセスを一覧で表示します。
各プロセスのCPU、メモリ、ディスク、ネットワークの使用率がリアルタイムで確認できます。
プロセスを右クリックし、「タスクの終了」を選ぶと、アプリケーションやプロセスを強制的に停止できます。
パフォーマンス タブ
システム全体のリソースの使用状況(CPU、メモリ、ディスク、ネットワークなど)をグラフで確認でき、リソースの過剰な使用やボトルネックの特定に役立ちます。
CPUの現在の速度、プロセス数、スレッド数、メモリの総容量や使用量の推移が表示されます。
アプリ履歴 タブ
アプリケーションの過去のリソース使用履歴(CPU、ネットワーク)を確認できます。
特定のアプリが長期間にわたり多くのリソースを使用しているかを把握するのに役立ちます。
スタートアップ タブ
Windows起動時に自動的に起動するアプリケーション一覧を表示します。
不要なアプリを無効にすることで、起動時間の短縮やリソースの節約が可能です。アプリケーションを選択して右クリックし、「無効化」を選択すると、次回起動時から無効になります。
ユーザー タブ
現在ログインしているユーザーごとのリソース使用状況を表示します。
他のユーザーのプロセスを選択し、強制終了も可能(管理者権限が必要な場合あり)。
詳細 タブ
全てのプロセスをより詳細に表示し、プロセスID(PID)、状態 、ユーザー名、詳細なリソース使用状況などを確認できます。
優先度を変更するなど、プロセスの実行に関する高度な管理が可能です。
サービス タブ
Windowsのサービスを一覧表示します。サービスはバックグラウンドで動作するシステムプロセスで、ユーザーが直接操作しないものが含まれます。
サービスを右クリックして「開始」や「停止」を選択し、動作を制御することができます。
3. タスクマネージャの利用例
-
プロセスの確認と強制終了:動作が不安定になったアプリケーションや応答がなくなったプログラムを強制終了する際に利用します。
-
パフォーマンスの監視:PCが遅い原因を調べるために、どのリソースが不足しているか(CPU使用率が高い、メモリが不足している等)を確認します。
-
スタートアップの管理:起動時に不要なアプリケーションを無効化し、PCの起動速度を向上させます。
-
メモリリークの検出:アプリが意図せずメモリを大量消費し続けていないか確認するために、メモリ使用量をチェックします。