You do not need to destroy the components separately. They will be destroyed with the parent actor.
Actors arent destroyed immediatly. They are marked as to be garbage collected and over time the memory will be freed.
The only time you need to write a manual destructor is when you
use objects that inherit from uobject or actors created by NewObject in c++.
Actors and components should clean memory after their own destruction.
Add a print string before the actor is destroyed and see if it even fires the node. Perhaps the bool next to the controlling branch has a wrong value.
Why didn’t long memory recovery when circulating in the callback UBlueprintAsyncActionBase node delete the Actor?
Is there any way to forcibly reclaim memory when deleting an actor?
You can try to force garbage collection but you should try object pooling first.
Please refer to this discussion: Force Garbage Collection
Is it the method in the picture below?
Perhaps you are calling async functions from within a loop? I’m not seeing the full scope of your blueprint so it’s just a guess. Async functions in blueprints don’t play well when triggered by loop macros.
Sorry,An array loop triggered by an asynchronous node callback removes Actor when memory keeps growing.
Is this Collect Garbage node called once per loop?
The garbage collection should be called whenever you need it. But I suspect something is wrong with your blueprint logic flow. Do the destroy actor nodes get called when you debug the code? Can you see the path to the node animate correctly and it triggering?