Download

How does UE4 GC handle object cyclic reference ?

I read the UE4 garbage collector source code, it seems to me the engine is scanning all the GC-managed objects, not only from the root-set

To be specific, in FRealtimeGC::MarkObjectsAsUnreachable, engine collects all objects into an array “ObjectsToSerialize” from the engine internal object array, then, in TFastReferenceCollector::CollectReferences, it scans every object in “ObjectsToSerialize” to find references

If this is correct, when using cyclic reference, something like a->b b->a, it will cause a memory leak

Is this correct ?

Any Epic developer can answer this ?