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.