【UE5】ブレークポイントで停止中にメモリ使用量が大きくなっていく
先日、ブループリントのデバッグ入門編みたいな動画を作成してみました。
この動画なんですが、実は作成するのにめちゃくちゃ苦労したんです!!というお話と、何に苦労したのかを記事にしてみました。
(まぁタイトルの通りなんですけどね...)
UE5.1.1 でサードパーソンから新規プロジェクトを作成しただけの状態です。メモリ使用量は約1520MBになっています。
そして BP_ThirdPersonCharacter に1キーを押したら BP_Enemy型の変数 Enemy から IntValue という変数をゲットし、その変数にセットするという何の意味もない処理を追加します。
画像はないですが BP_Enemy は BP_ThirdPersonCharacter を複製して名前を変えただけのもので、それをレベル上に配置したものになっています。
そして、この処理にブレークポイントを置き、プレイしてから1キーを押すと画像の状態で一時停止します。
ここで Enemy のピンや、そこから Get してる IntValue のピンの上にマウスオーバーすると変数の値を確認することができます。
この一時停止している状態で、タスクマネージャーのメモリ使用量に注目しながら、マウスオーバーを何度か繰り返し行ってみたという画像です。
今回は極端に20~30回ほどマウスオーバーを繰り返したんですが、使用量は約1962MB に増えており、先程の状態が約1520MB なので、約400MB ほどメモリの使用量が増えたということになります。
メモリ使用量のお話を先にしてますが、動画作成中はまさかそんな現象が発生しているとは思っておりませんでした。そして、動画の撮影中に初めて録画ソフトが落ち、更に UE5.1 も落ちました。
この PC は UE5 を使うにはスペック的に心許無いのは分かってて使ってるので、デバッグしながら録画はちょっときついか~と思ってました。
しかし2回、3回と落ち始め流石におかしいと思い、上記のタスクマネージャーを開きながら確認したところ、ブレークポイントで停止中、ピンの上にマウスオーバーする操作を繰り返すごとにメモリの使用量が上がっていく現象に気が付きました。
しかもデバッグを中止したにも関わらずメモリは増えたままで解放されていませんでした。私の PC はメモリ 16GB なので VOICEVOX + 録画 + 動画編集ソフト + UE のセットでいつも編集中はメモリ10~12GB 前後使ってるのでメモリリークなんて追い打ちをされた日にはたまったもんじゃありませんね。
これを解消するにはエディタごと再起動すれば治りますので、デバッグが終わったらこまめに UE を再起動して、また動画を撮って...と繰り返してました。VOICEVOX の音声に合わせているので動画が一発撮りで終わるわけもなく、これ動画出来上がるんか!?と思いながら編集に2週間ほど掛けようやくといった所で落ち着きました。
この症状は UE5.0.3 / UE5.1.1 で確認できました。
(UE5.2.0 はまだ未確認)
恐らくなんですが、オブジェクト参照の変数に対して先程の操作を行うと発生するのではないかなと思いました。
(オブジェクト参照以外見てないので分かりませんが...)
普通の Integer 型の変数を作成して Get/Set するだけの処理では特に変わってないような気がしました。
仕様なのか不具合なのかいまいち線引きが難しいのはやめて欲しいですね~。
2023-05-20 追記:
https://issues.unrealengine.com/issue/UE-145543
多分症状これっぽいですね...
Fixed になってて、Target Fix が UE5.2 になってるので UE5.2 で治ってるのかもしれません。
時間が出来たら確認してみます。