Hi everybody! I’m working with widgets in C++ and I’m testing the garbage collector of the Engine.
My scenario is that I’ve a pointer to a widget instance, at a certain point I need to destroy the widget: for what I’ve experienced, the best way is to detach all pointers to the widget, in such a way to allow the garbage collector to destroy it.
Since a don’t want to waste resources and speed up the deletion of the widget I’m making these calls:
In this way the garbage collector destroys immediatly the old widget. My question is: is safe to use these function methods?? How does “ConditinalBeginDestroy()” exactly work?
thank you so much, so simple, i didn’t even use GetWorld()->ForceGarbageCollection(true);
and it works. I was looking for a solution for over a year, so like you I am afraid
it’s to good to be true. Please tell me if you run in to any problems.
If I were you, I’d let the engine & GC handle cleaning up the widget, not destroying it immediately won’t cause you any problems unless for some reason you’d have to spawn like a 100 widgets each frame, but I hardly think that’s the case here.
Also, for bigger games, ForceGarbageCollection can be really slow - but like, really, really slow. It can run for seconds. Now, keeping a few kilobytes in the RAM for a minute will not affect gameplay at all, while making the game irresponsive for half a second (or even 1-2 frames) will definitely affect the experience negatively. I don’t think you should do it unless you have an extremely specific case.