Quick answer: Unreal FStreamableHandle accumulating in memory after canceling loads? Canceling doesn't release the handle - call ReleaseHandle explicitly in your loader's destructor.
Scene streaming canceled mid-load. Memory profiler shows 200MB of dangling handles after 30 minutes of play.
Release on cancel
Handle->CancelHandle();
Handle->ReleaseHandle();Cancel stops the load; release frees the handle's memory. Both needed.
Use TSharedPtr correctly
FStreamableHandle is shared-ptr managed. Holding a reference past intended scope keeps the load alive even after cancel.
Audit with Memory Profiler
memreport -full. StreamableHandle rows count handles. Growing across sessions = leak.
“Async handles are explicit lifetimes. Cancel is half of the contract; release is the other half.”
Wrap async loads in a small RAII helper that releases on destruction. Lets you reason about lifetimes structurally.