Actor suicide cause memory leaks?

We’re newbies about the Unreal Engine and we’re testing the actor suicide memory leaking issue.
We start a new, empty world, the level, and an actor. Then we write a component attached on the actor.
Testing codes and blue prints listed below:

void AManager::SpawnObj() {
        if (WhatToSpawn!=nullptr) {
                UWorld* const _world = GetWorld();
                if (_world) {
                        FActorSpawnParameters _spawnParams;
                        _spawnParams.Owner = this;
                        _spawnParams.Instigator = Instigator;
                        for (int i = 0; i < 50; i++) {
                                FVector _spawnLocation = GetRandomWhereToSpawn();
                                AActor*  _spawnedObj = _world->SpawnActor<AActor>(WhatToSpawn, _spawnLocation, FRotator(0, 0, 0));
                        }
                        GetWorldTimerManager().SetTimer(SpawnTimer, this, &AManager::SpawnObj, SpawnDelay, false);
                }
        }

The conclusion is, the actor will spawn new actor until total counts reach 50. Spawned actor will set its material by the blueprint, and then suicide about 0.45 seconds.

Our target OS is Android 5.1, and when we put it into warming test, we found lots memory leaks occured.
We reviewed our codes, but we have no ideas about that.
Is anyone kindly hint us anything we should know?

You appear to be spawning 50 actors every spawn delay, if this intentional because you are destroying them inside themselves, why not instead maintain an array of AActors and tell them to hide then reappear elsewhere with a new material?

Aside from the object pool suggested by @HarryHighDef, is there any chance you are holding a reference to it in any blueprint? Maybe that could prevent the objects from getting garbage collected. Also, have you set a breakpoint on the AActor::Destroy() function to be sure its being called?

50 actors is an example, not our spec.
Our goal is test load/unload memory leaks issue. Memory leaks should not occurred. That’s the point.

Our goal is test load/unload memory leaks issue. Memory leaks should not occurred. That’s the point.
We’re not going to hold anything about resources, include reference, we want them be destroyed, be freed, to make more RAM available. So that’s why we unload them necessary.

I understand the point. Have you verified and walked the code when destroy gets called on the actors?

If an actor is destroyed, its memory is marked for cleanup, but it is possible the garbage collector has not yet come around to cleaning them up. If the behavior you are spawning them in runs frequently enough, it is possible you will see memory spikes. Eventually, you should see a large amount of memory get freed, then it will build back up again. Otherwise I would say what you are experiencing is definitely unexpected behavior.
UE4’s garbage collector is fairly robust and has quite a few settings you may be interested, if you are looking to tune it for your specific needs, be sure to check out the documentation.

Hope this helps,
Spiris