Client Memory Management: A Roblox Developer Guided Meditation

We are happy to introduce the new and improved Client Memory tracking tools: memory usage on your game client is broken down by “Developer Tags”, with each developer tag having a set of specific steps you can take to improve memory for that tag.

A complete list of tags and suggested steps can be found here:
http://wiki.roblox.com/index.php?title=Memory_Analyzer.

These statistics can be found in the “Diagnostics” widget in Studio, under PerformanceStats/Memory.
They can also be found in the “Client Memory” tab on the developer console in both Studio and Client. This is currently only supported for desktop Clients, but we hope to have it working soon for Mobile.

And now, to fully immerse you in the glories of this new feature, we offer this meditative moment:

Hello.

Welcome to the Roblox Developer Guided Meditation: Client Memory edition.

Please make yourself comfortable. Sit with your feet on the floor, straight back, and hands comfortably folded in your lap.

Get yourself a buttery scone and a nice cup of soothing ginger tea.

Turn down your lights, and turn up the volume on John Tesh Live at Red Rocks.

You are now ready to begin.

You are a proud, strong Roblox Developer. You make quality games that perform well on all platforms. Desktop. Mobile. XBox. Neural implants.

Sometimes your games take up too much memory and crash. This may create feelings of stress, fear, anger, and general remorse over your life choices.

Release those emotions now. Imagine them flowing out of your body as a spooky black cloud and dispersing into the atmosphere. Dispersing… dispersing… oops there’s a little more… dispersing… you could have been a doctor but NO dispersing… and… gone.

Now. Open a game you have developed and then open the Developer Console.

Breathe deeply. Release your negative energies.

You will see a tab called “Client Memory”. Click this tab. Clicking… clicking…

You will see a table of your Client Memory usage, broken down into different categories.

Now click on this link: http://wiki.roblox.com/index.php?title=Memory_Analyzer. Clicking… clicking…

This page describes what each of these categories means, and steps you can take to decrease the number in each category.

You a serene white rabbit riding on the back of a majestic black battle-mare.

No more will you wonder where your memory is going, or what steps you might take to reduce memory usage in a particular area.

… and breathe… you have now completed your guided meditation. May your development be insightful as a grandma and creative as a toddler. Be well.

57 Likes

The perfect poet strikes again!

https://devforum.roblox.com/uploads/default/original/3X/c/e/ce57b1d66ffcbb7bf6787ca9b5f5c29bd83bc06c.gif

Can’t wait to try this out, it’s going to be very useful.

5 Likes

This is great!

What are the chances we can get average/target memory consumption values per a platform?

6 Likes

What’s the difference between a Sound and Streaming Sound? (my guess would be sounds playing on the server are streaming and sounds replicated are loaded? But I have no idea.)

1 Like

Sound is like a wav file packaged up with your game, kept in memory, played on demand.

Streaming means your game somehow refers to a sound asset “in the cloud”. We use “streaming” code to play it, meaning we just grab the next few chunks we need to keep the sound playing: a constant stream of data is coming in. We never have the whole thing in memory at once.

4 Likes

That’d be ideal, but it’s hard to define. You can generally make tradeoffs between categories so it’s hard to offer a suggested max per category: if you want to use less collision but more sounds, that’s fine.

Also hard to id maxes because things really vary per platform (iOS vs Android vs desktop vs ???).

Further complicated because depending on the system, some of the stuff related to graphics isn’t interchangeable. Like there’s memory set aside just for graphics stuff, and if you don’t use it it’s not available to other non-graphics things like sounds.

So short answer, no.

3 Likes

Do you mind making TL;DRs for these in the future? When I see a huge post in the updates forum I’m going to read the whole thing because I expect to be informed about an update. It’s a good story and all, but I’d rather just get to the information that the post is actually about.

4 Likes

He already did, the first couple of paragraphs are the to-the-point version of the part in italics

2 Likes

Yeah I can see that now after reading the whole thing, but there was no indicator that the italics part didn’t have any information in it.

1 Like

Sorry about that. From now on I will try to put the relevant info at top with no tomfoolery.

What is TL:DR?

1 Like

No. Don’t let them change you.

You’re perfect the way you are.

3 Likes

It stands for “too long; didn’t read”. In lengthy posts people make a section called “TL;DR” that summarizes the important points.

1 Like

For the very technically inclined it’s worth noting two more things:

  • We have an internal category breakdown in microprofiler in Mode->Counters menu. As other microprofile features this one is for our internal use, but if you want to learn more about the core systems you’re welcome to look at it.

  • The microprofile counters are also saved in the HTML dumps, which makes them handy for diagnosing issues we can’t reproduce - when reporting bugs around “my game takes too much core memory”, be prepared for us asking you to attach a microprofile dump to the bug report, similarly to performance issues.

4 Likes

I’d party with you

1 Like

On a separate note are you attending RDC?

1 Like