JobTempAlloc has allocations that are more than 4 frames old

トラブルシューティング

一見するとJobSystemがらみの警告に見えますが、アセットバンドル読み込みで発生しました。

Unity2019.3.10f1 Addressable1.8.3

1MBくらいのテクスチャ100枚程度を含んだシーンをアセットバンドルに格納し、Addressableで読み込むと高確率で発生します。枚数が少なければ確率は低下し、枚数が多ければ確率が上昇します。

そしてwindowsビルドだと最悪フリーズします。しないこともあります。僕のゲームプロジェクトの場合9割がたフリーズしました。

Unity2019.4.0f1でwarningは出るものの実機では動くことを確認

Editorでwarningが出まくることにかわりないですが、windowsビルドは正常に動作しました。

しかし、環境によるらしく、intelHDGraphicsなどの低スペック機だと高確率でフリーズします。またRTX2060のような高スペック環境でもフリーズする報告あります。

似たような事例

https://forum.unity.com/threads/assetbundles-aup-textures-jobtempalloc-has-allocations-that-are-more-than-4-frames-old.774440/
Unity IssueTracker - Asset Bundles fail to load when using async loading methods
How to reproduce: 1. Open 'SampleScene' from attached project 2. Start Play mode 3. In Game window click "Load Broken" 4. Inspect Co...

暫定対策

Quality設定のAsync Upload Time Sliceを最大の33ms

Async Upload Buffer Sizeを少な目の4mbにします。

なるべく細かくGPU memoryに転送してやろうという作戦です。今のところこれでしのげています(しのげないこともあります

ただ、最近のGPUが高々16mbの転送に4フレーム(=64ms超えるだろうかみたいな疑問は残ります。実際unityのバグだと思うのでバグレポは出しておきました

issueはどこ?

Unity IssueTracker - Memory leak occurs when loading a Scene with Addressables.LoadSceneAsync which has more than 40 Texture references
How to reproduce: 1. Open the attached "1245368 repro" project 2. Open "Test" Scene from Assets > Scenes folder 3. Open Addressab...

これです。40枚以上のテクスチャを持ったシーンが危険らしいです。でかいシーンのテクスチャを別アセットバンドルに逃がすようにしてみます。