I’m profiling game loading with the following structure:
- The loader scene contains 3 characters, a few UI elements, one script and ZERO reference to anything else in the game.
- The loader script loads asynchronously the title scene
- It loads the title scene contains a streamed tune, some sounds, a manager with loads of references to assets as well as some UI that’s atlased by the unity packer. It’s memory footprint is probably on the heavy side so let’s called this title scene the heavy-title.
Looking at the memory curve, the loader scene is at 357MB and 6.4K objects jumping to 10K objects but remaining around 350MB (in fact dropping slighly!).
I duplicate heavy-title and remove the manager, most GUI and all references to non scene assets, let’s call it light-title.
What I’m getting is weird, the object count or memory of the loader scene should be the same as before but instead it it is much lower.
Strange things:
- I assumed that asset load was a lazy process, so a light first scene would pull into memory only what it needs and only that resulting in a small footprint but it seems not to be the case and apparently all the scenes are loaded ahead.
- the object count is insanely high for a loader which contains almost nothing (6K), also why is it higher when it’s loading a heavier scene?
- LoadAsync stops the profiler from sending so I don’t see the progression in memory hogging, anyone knows more about its inner work? I understand it’s a separate thread but gpu texture load goes to the main.
Can anyone make sense of these results?

