I have tried to dig into it and found it’s happening because of some Garbage Collector right after the startup map loaded.
GarbageCollector.cpp:1502:
FCoreUObjectDelegates::GetPreGarbageCollectDelegate().Broadcast();
But I have no idea what’s going on
Update
After further digging, I’ve found it’s happening for the projects which have Niagara Systems in the startap level used (no matter how exactly – directly put into the level or referenced from another objects which in turn are placed in the level or inited some other way on start).
For some reason, UE4 is re-compiling all such niagara scripts each time when loaded, instead of saving it into DerivedDataCache for reuse.
I’ve sumbitted the bug report to Epics, hope they answer soon.
Update 2
Epic guys have responded and told me the bug is already fixed in their internal repository for the 4.23, so we have to ait…
Workaround (partial)
Just create an empty level and set it as a startup map! It starts to load very fast as it should! Though then loading the original map will still be a problem, but I think it’s better anyway.