Gil's new loading path may already walk away from this issue.
But here's some thing I tested locally if we want to fix this.
A simple way to fix is to simply add
BulkDataAsync.Deallocate();
ResetAsyncData();
in FUntypedBulkData::FlushAsyncLoading.
But from the interface design aspect, I think we should treat BulkDataAsync to be handled as same to BulkData. We may:
1. While FlushAsyncLoading, don't need any Dest, just BulkData = MoveTemp(BulkDataAsync);
2. While LoadDataIntoMemory, ensure to Flush and check BulkData first and can safely remove codes that check for SerializeFuture.IsValid() while trying to LoadData.
3. When we want to copy data, we can always just LoadDataIntoMemory and then use Memcpy or BulkData.ReleaseWithoutDeallocating() on demand whether we need to keep a copy in BulkData.
A test on a demo Android project saved me about 100MB from BulkDataAsync.Deallocate.
While launch engine, quite a bit content with BulkData may using Async loading path but the BulkDataAsync never released.
I am not able to find world outliner how to enable it?
Undefined sysmbol: typeinfo for AActor when cross-compile linux dedicated server on windows
How can i modify the param name in EQS node
Delay nodes occasionally don't fire the "Completed" output in a nativized build
Why does the REMOVE method of map container remove elements have memory leaks?
How does TextureRenderTarget2D get TArray<uint8> type data?
How does UMG set overlapping layouts?
How to achieve HLSL Multiple Render Target in Material blueprints?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-37815 in the post.
0 |
Component | UE - Foundation - Core |
---|---|
Target Fix | 4.15 |
Created | Oct 26, 2016 |
---|---|
Resolved | Jan 26, 2017 |
Updated | Sep 16, 2019 |