The engine does not free the LevelRenderAssetManagers array elements in FRenderAssetStreamingManager when changing lighting scenarios.
Following code can avoid this issue.
void FRenderAssetStreamingManager::PropagateLightingScenarioChange() { FScopeLock ScopeLock(&CriticalSection); QUICK_SCOPE_CYCLE_COUNTER(STAT_FRenderAssetStreamingManager_PropagateLightingScenarioChange); // Note that dynamic components don't need to be handled because their renderstates are updated, which triggers and update. TArray<ULevel*, TInlineAllocator<32> > Levels; for (FLevelRenderAssetManager* LevelManager : LevelRenderAssetManagers) { if (LevelManager!=nullptr) { Levels.Push(LevelManager->GetLevel()); LevelManager->Remove(nullptr); delete LevelManager; // add this line } }
Result:
StreamingManager memory amount keeps increasing.
The screenshot below is from an hour after launch.
[Image Removed]
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-97571 in the post.
1 |
Component | UE - Rendering Architecture - RHI |
---|---|
Affects Versions | 4.24, 4.25 |
Target Fix | 4.26 |
Created | Aug 26, 2020 |
---|---|
Resolved | Aug 28, 2020 |
Updated | Jul 23, 2021 |