iOSでNiagaraシステムを使用するとメモリリークする問題

iOSではNiagaraシステムのエフェクトを配置しただけでメモリリークしているようです。

様々な状況でリークについて調査いたしました。

<br/>

・放置しているだけでアプリの使用メモリ(デベロッパモードのグラフィクスHUDのMemの値)が増え続ける

・MemReportやstat memoryplatformではUsed Physicalは増えないが、Available Physicalは減り続ける

・NiagaraのRendererをオフにするとメモリは増えない

・Developmentの方がメモリが増えるペースが早く、10分で6MB程度、Shippingだと10分で2MB程度

<br/>

となっておりました。

またこの計測はUE5.3.2のカスタムエンジンのため(Xcodeのバージョンの都合でバニラでは未確認)別のバージョンのバニラUEでも確認いたしました。

<br/>

・5.4.4 Shipping 5.3.2よりは緩やかだがメモリは増え続ける

・5.7.1 Shipping メモリは安定している

<br/>

となっておりました。

また rhi.Metal.RuntimeDebugLevel を6にしたところ

<br/>

Warning: Vertex Layout Mismatch: Index: 25, Len: 12, Decl. Stride: 16

<br/>

というワーニングが出ていたため、FNullVertexBuffer::InitRHIで作るバッファをFVector4fにしたところ、少しメモリが増えるのが緩やかになったようですが増え続けてはいました。

<br/>

すでにサポート対象外のバージョンであることは理解しておりますが、プロジェクトの状況的にバージョンを上げることは難しく、5.3.2のまま解決することが出来ないかと思っております。

<br/>

お手数ですがご確認いただけるでしょうか。

[Attachment Removed]

再現手順
再現手順はUE5.3.2で新規プロジェクトを作成し、

NiagaraSystemのアセットを配置してiOSビルドを行い起動するとご確認いただけます。

一応プロジェクトも添付いたしました。

[Attachment Removed]

情報が不足していたため補足させてください。

[Content removed]

こちらのスレッドでメッシュパーティクルについてはメモリリークするものかと思っていたため、​今回はSpriteRendererをテストしたものになります。

エンジンコンテンツに入っている​DirectionalBurstからRibbonを除いたSpriteRendererのみにしたものでメモリリークが発生しております。

また前回添付したはずのプロジェクトが添付されてなさそうでしたので改めて添付しました。​

5.3.2DevelopmentでのUnrealInsightsでのスクショも添付いたしました。

[Image Removed]​

お手数ですが何卒よろしくお願いいたします。​

[Attachment Removed]

お世話になっております。

追加情報ですが、

Vanillaな5.3.2でも発生しますか?

そしてCPUでもGPUでも起きていますか?

5.6でも起きていますか?

MemoryAllocatorは何を使っていますか?ANSIですか?

お手数ですが、よろしくお願いします。

[Attachment Removed]

ご確認ありがとうございます。

ご質問の回答は以下となります。

以下全てバニラUEで確認

・5.3.2 リークする

・5.4.4 リークする(程度は緩やか)

・5.5.4 リークしない

・5.6.1 リークしない

・5.7.1 リークしない

起きているのはCPUのみでGPUでは起きておりません。

MemoryAllocatorはANSIを使用しております。

以上となります。お手数ですがよろしくお願いいたします。

[Attachment Removed]

お世話になっております。

今Niagaraチームとやり取りでどこのCLが必要になるか確認しています。

CL 20975243で解決できるかと確認していただけますか?

また、来週からエピックが全体的に休みに入るため、対応遅れる可能性があります。申し訳ないです。

お手数ですが、よろしくお願いします。

[Attachment Removed]

お世話になっております。

CL 20975243の履歴を見ようとしたところ「no permission to view」となって閲覧出来なかったのですが、

取得している5.3.2はCL 28629627のため、CL 20975243は適用済みと思われます。

よろしくお願いいたします。

[Attachment Removed]

お世話になっております。

失礼しました。提案する予定CLは20981333でした。でも言っしゃる通りで、すでに取得していると思います。

念のためですが、mallocbinnedかmallocbinnedに切り替えたら発生するかどうか確認していただけますか?

ピンポイントな調整CLを見つけるため時間がかかるしもれません。調整しなきゃいけないタイムライン(締切やリリースなど)について教えていただけますか?

(改めてですが、5日までエピックが全体的に休みに入るため、対応遅れる可能性があります。申し訳ないです。)

お手数ですが、よろしくお願いします。

[Attachment Removed]

お世話になっております。

MemoryAllocatorを変更して検証してみます。

締め切りについては2026/1/16を想定しておりますが、この問題以外はほぼ問題がない状態ですので、もう少し後になっても大丈夫かもしれません。

引き続き、よろしくお願いいたします。

[Attachment Removed]

お世話になっております。

あけましておめでとうございます。

今年もよろしくお願いします。

Allocatorを変えて、変更がありましたか?

お手数ですが、よろしくお願いします。

[Attachment Removed]

お世話になっております。

あけましておめでとうございます。

今年もよろしくお願いいたします。

AllocatorをBinned2切り替えましたが問題は同様に発生しておりました。

UEのバージョンは5.3.2でテストしており、メモリリークの速度も同程度と思われます。

お手数ですが、ご確認よろしくお願いいたします。

[Attachment Removed]

お世話になっております。​

Fortniteチームと相談して、Metalの方の問題の可能性が高くて、SDKのアップデートで最近のUEでも調整なっているようです。5.3のままだと調整が難しいかもしれません。

ただ、一つ試して欲しいことがあって、Xcodeからの実行で​、こちらの全部OFFにしてリークを抑えられるかどうか試していただけませんか?

お手数ですが、よろしくお願いします。​

​ [Image Removed] [Image Removed]

[Attachment Removed]

お世話になっております。

Metalの問題の可能性が高く5.3の修正が難しいこと承知いたしました。

ご連絡いただいた項目については全てOFFにしてテストしましたがリークは抑えられませんでした。

DevelopmentでもShippingでもこれまでと同様にリークしておりました。

よろしくお願いいたします。

[Attachment Removed]

お世話になっております。

もう一度、関係がありそうな CL をすべて確認しましたが、残念ながら効果はありませんでした。

iOS のレンダラー担当者とも以前からやり取りしており、かなり前の話になるため詳細までは覚えていないとのことですが、特に心当たりのある CL はないそうです。

ただし、UE 5.3.2 で使用していた Metal SDK にメモリリークがあり、その件については Apple と直接対応したことがあると聞いています。おそらく、その問題に関連している可能性があると思われます。

なお、5.3.2 ではまだ MTLCPP を使用しているため、もし SDK のアップデートを 5.3.2 にマージする場合、大きな作業になると思われます。

今回、問題を解決できず申し訳ありません。

もし Metal のアップデートを進めたい場合は、ぜひサポートさせてください。

よろしくお願いいたします。

[Attachment Removed]

お世話になっております。

ご確認いただき誠にありがとうございます。

5.4.4ではMetalSDKはアップデートされていると思うのですが、それでもメモリリークは直っていないことを考えると

個別にアップデートするよりはUE全体を5.5以上にアップデートするしかないように感じております。

ただこの場合かなりの改修コストと検証コストがかかるため現実的ではないと思っておりますので、

クライアント様にご相談して方針を決めようと思います。

サポートいただきありがとうございました。

[Attachment Removed]