<aside> 🗒️ Part of Ari's Unreal Engine Notes.

</aside>

UObjects

Finding which UObjects are in memory and what references them to keep them alive is enough to solve most memory investigations. Use the following commands to help solve those issues:

obj commands are handled in UEngine::HandleObjCommand (UnrealEngine.cpp:7098). Advanced helper obj commands in Obj.cpp:3719.

World Memory Leaks

Read the log to see the cause of World Memory Leak crashes. For most easy cases that should be enough to find the cause.

If the root object shouldn't be in memory at all then we need to figure out why it's being kept in memory during GC. Usually it will have the reason why GC doesn't consider it for collection in parenthesis if it's due to object flags, i.e. (asyncloading), (root), etc.

If those still don't help then the next section looks at general memory leak troubleshooting.

Find what marks the object as reachable

The reason why an object stays in memory is because either something is marking it as reachable by referencing it, or that the object was never even considered unreachable in the first place.