Search Issue Tracker

Fix In Review for 1.18.5

Votes

0

Found in [Package]

1.18.2

Issue ID

ADDR-1962

Regression

No

[Addressables] Unity runs out of memory when building Adressables, the build is never completed

Package: Build Pipeline - Addressables

-

Reproduction steps:
1. Extract the project in"InstallationTracker.zip"
2. Execute 'xattr -cr case_1332957-InstallationTracker' in the location you extracted the project
3. Open the project
4. Go Window -> Asset Management -> Addressables -> Groups
5. In Addressables Groups window click Build -> New Build -> Default Build Script

Expected result: A progress bar will show up and after a while the build completes
Actual result: A progress bar shows up, the build never completes, In about a minute of building time, Unity will take up all available RAM on the device and will stay in that state indefinitely

Reproducible with: 1.4.0 (2020.3.6f1), 1.18.2 (2019.4.26f1, 2020.3.7f1, 2021.1.6f1), 1.17.17 (2021.2.0a15)
Could not test with 2018.4.34f1 (package errors, project breaks)

Reproducible on Windows and Mac

Notes:
1. The customer mentioned that this sometimes causes the entire computer to crash/ shut down, but I was not able to reproduce this behaviour. The RAM fills out but nothing happens afterward.
2. Force Quit the application at any point to free the RAM

  1. Response avatar

    Resolution Note (fix version 1.18.5):

    RAM consumption increases significantly when generating sub asset path maps. A workaround to improve performance is to disable the visible asset representations flag for all sub assets. The flag essentially determines if the asset is visible in the Project view.

    This can be done by either (1) using the new "Disable Visible Sub Asset Representations" option that can be toggled in Build section of the Settings inspector, or (2) manually modifying the fbx files so that there is a root node containing all other nodes, and "Preserve Hierarchy" must also be enabled in the model import settings.

    Note that when (1) or (2) is done, it is not possible to access sub assets directly through the AssetBundle.LoadAsset<T> or AssetBundle.LoadAllAssets<T> apis (they rely on the visible asset representations flag to gather objects). Instead the main asset needs to be loaded first, then its sub assets can be extracted from it.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.