Bug Report Details: With streaming enabled, memory management can get over-run by new parts streaming in to client to cause client to run out of RAM and thus crashing the Roblox client. Most frequently happens to mobile devices on Android, iOS.
Where: Roblox Client
When: Anyways
Environment: Widows 7, Windows 10, Android (any version), iOS (any version)
Roblox Client Version: Latest as of 12/14/2024 this week
How to Reproduce: Need a large map with a large amount of parts (that would normally exceed client memory if all were loaded at once), streaming enabled on the server, Low Memory mode stream out on server, a low minimum (64) and target (96) streaming radius to allow demonstration of slow build up in RAM.
- Enable “Performance Stats” on client to watch memory usage.
- Walk around map and watch memory usage climb as parts stream in to memory.
- If you keeping walking at a consistent pace, you can eventually start streaming in more parts faster than memory management can remove them from memory until the device runs out of RAM, crashing the client to the desktop (or home screen in mobile)
Demo Example: Can be reproduced without a demo file in any example, best results when using a client that has 2GB of RAM or less, be it PC or Mobile. More RAM just means it takes longer to reach the memory limit. Affects slower devices more than faster devices as they appear to be about to keep up with clearing memory before running out if the player is moving slow enough.
Expected behavior
What to expect: Roblox Client memory management to take priority over Streaming (pause it perhaps?) so that it can remove other parts first to clear memory; then new parts streaming in don’t force the device to run out of RAM and crash client.
Video Example: The screen recorder crashes out too when the Roblox Client consumes all the RAM, so I might have to get another mobile device and just do a manual screen-record by hand. Now I have a video, forgive my assistant holding the camera. This mobile device has 2GB of RAM, but only about 800MB is usable by Roblox. If it hits that limit, it crashes mid-game.
Additional Notes on Video: Memory management is working along the way because the memory usage goes up as the path ahead is loaded, gets close to the limit, then goes back down as I believe it is unloading the parts behind me as I move forward. Every thing seems fine until it just kind of gets overwhelmed towards the end trying to keep up and burns through all the RAM at once during the next streaming update.