Add ability to browse / view instances that are parented to `nil`

As a Roblox developer, it is currently impossible to view a list of instances that are parented to nil, but still have references attached to them. There should be a feature added to studio that allows developers to browse / view a list of instances that are currently parented to nil.

Having this functionality would make debugging my games a lot easier, since this would allow developers to see which instances are not being garbage-collected over a period of time. Game instances can often have unique names associated with them, making it fairly easy to see which game systems are leaking memory (e.g. “hey, the map from 2 rounds ago is still not destroyed”).

Bonus points : Allow us to manipulate these instances via normal code! E.g. being able to parent them to workspace to analyze them to figure out what code generated them.

I was able to find a memory leak in my game simply by comparing instance names between rounds! Notice the GUID that persists between rounds 2 and 3. That should have been garbage collected, but wasn’t! It’s a memory leak!

The only way of doing this currently is by utilizing external exploit tools (such as synapse) to hook into the client’s memory. This is obviously not an ideal way of debugging memory leaks!

75 Likes

Would absolutely agree with this feature request for the exact same reasoning.

In a similar line of thinking, having a way to see whatever specifically ties those instances to purgatory (e.g. connected events) would be the icing on top.

7 Likes

I don’t care how hacky or slow the implementation of this is, I need this for debugging purposes exclusively. I have a serverside memory leak I’ve been chasing for a very long time and there is no way for me to find it. It’s only noticeable after having hundreds of players join and leave my game, and I cannot just go around disabling core gameplay systems. If I had this I’d be able to see exactly what is left hanging around without requiring hundreds of players.

14 Likes

Glad to help with this. This is incredibly useful to have because there’s no way without synapse to see it. We shouldn’t have to rely on an external tool, let alone an exploit just to dig this up.

4 Likes

Tools like this are important to the process of debugging memory issues, which of right now isn’t ideal and would be to inspect your code, make a guess, and look at the memory usage numbers and graphs.

Security note (to the engineers): As of right now, a few security features on roblox relies on not being able to reference a specific instance, instead having the reference but not having write or read access permissions.
As an example I can think of, assuming plugins are nil parented, you do not want that pluginA finding pluginB's reference to call pluginB:SetSetting().

4 Likes

There is still a huge need for this! Tracing the root causes of memory leaks is still very tedious because we lack tooling (such as the ability to browse nil parented instances) to assist the trace.

4 Likes

Agreed 100%.
Can someone from Roblox respond to this or something already?

Hey… you know what? I wonder what @maximum_adhd would think of this…

2 Likes

Tracking instances outside of the hierarchy is not feasible in regular engine code most likely, but it would be amazing if we could enable some sort of tracking mode in Studio that will add the instance to some sort of weak pointer container when the parent is set to nil, or remove it from that container when it’s set non-null. Then Studio could enumerate that list in UI and show the contained instances to the user if they’re still alive.

Really want this.

1 Like