お世話になっております
<br/>
前回回答いただいた
[Content removed]
でSplineMeshComponentのリークは改善されたのですが
サブレベルのロード/アンロードを繰り返すとShaderResourceMemoryが増加し続けていく状態となります
<br/>
プロジェクトとしてLumen無効のDistanceFieldが有効のため追加で
[Content removed]
こちらも試してみたのですが変わらず発生するようでした
<br/>
また、Stat Shadersで表示されるNum Shaders Createdが徐々に減少し
マイナス値にまでなってしまうため統計のカウントの問題で実際にはリークしていない可能性もありますが
MemoryInsightsのLLM Totalが微増していくのを確認しております
[Image Removed]
<br/>
こちらご確認よろしくお願いいたします。
[Attachment Removed]
再現手順
1.添付したプロジェクトをWindows向けにパッケージ化します
2.コンソールコマンドでStat Shadersを入力し統計を表示します
3.2キー、3キーを交互に何度も連打します
[Image Removed]
連打を繰り返すとShaderResourceMemoryの値が増加し続けます
また、Num Shaders Createdは減少していきMin値がマイナスになります
[Attachment Removed]
Shader Resource Mem(STAT_Shaders_ShaderResourceMemory) は FShaderMapBase::Serialize でロードに反応して加算されますが、シェーダーが共有ライブラリにありFShaderCodeLibrary::LoadResourceを通る経路でロードされた場合、同じポインタを指すリソースが複数回加算されてしまいます。
減算は大元のリソースの破棄時だけに行われるので加算と減算の回数に大きな差異が生まれるためこのカウンタは無限に増え続けます。
一方Num Shaders Created(STAT_Shaders_NumShadersCreated)は逆のことが起こっており、共有ライブラリから作られた場合は加算されず、シェーダーマップの破棄時に FShaderMapResource::ReleaseShaders でスロット数分破棄されるのでカウンタが減り続けます。
どちらのカウンタも正しい値を示しておらず、stat shadersが壊れているという内容のバグチケットはありますが未修正となっております。大変恐縮ではありますがこのカウンタは参考にしないように運用いただけますと幸いです。
[Attachment Removed]
お世話になっております。
> このカウンタは参考にしないように運用いただけますと幸いです。
承知しました。
こちらでも参照カウンタの動作が正しくないのを確認していて
MemoryInsightsでのLLM Shadersの値は安定していたのでStat側の問題であることが確認できました
ただ、LLM Totalは微増し続けるのは変わらないため
また何かわかり次第質問させていただければと思います。
[Attachment Removed]