UnityRef is currently in early development. Some features may be incomplete and/or not functioning.

UNITYREF

Your Pit Stop For Solving ANYTHING in Unity

optimization

[Addressables] Fix High PersistentManager.Remapper RAM Bloat

Solution

addressablesmemory managementoptimizationprofiling

Unity 2021.3.x - Unity 6.3.x

Published 15 days ago

Issue

 High RAM usage by the PersistentManager.Remapper—reported around 270 MB—is a concern when aiming for total RAM usage below 2 GB. Traditional optimization methods for other Unity objects like textures or shaders are not applicable, and the impact of your addressable assets schema settings on remapper memory is often unclear.

The remapper memory footprint scales with the total number of managed objects and AssetBundles, and it may not shrink efficiently after loading peak.

Explanation

The remapper is part of the Unity PersistentManager that tracks object references across scenes and bundles. In Addressables, its size scales with the total number of entries in your addressables catalog and the metadata fragmentation of your AssetBundles. To optimize this, you must reduce the granular tracking of assets.

  1. Consolidate small Addressable Groups into fewer, larger bundles to reduce the total count of AssetBundles generated, as each bundle header adds to the remapper overhead.
  2. Address folders or your collections rather than individual files to significantly decrease the number of metadata entries in the remapper table.
  3. Execute the Check Duplicate Dependencies rule in the Addressables Analyze window to identify and remove redundant metadata.
  4. Enable Catalog Compression in your AddressableAssetSettings to minimize the runtime memory footprint of your addressable assets catalog.

Additional Tips

  • Use the Memory Profiler package to inspect the Other category, where remapper allocations are typically categorized, to track how the remapper reacts to different loading patterns.
  • Be aware that the remapper may not immediately decommit memory back to the OS after assets are released; this is often intended behavior by the underlying allocator to prevent fragmented re-allocations.

Related Posts Haven't quite found a solution to your problem? We think these posts might help you.

Content inspired by a Unity discussion post.