当拖动Editor的Border时候,会导致Editor Crash。(虽然这个问题不是常用的操作导致的,但确实存在这个问题)
造成该问题的原因是:在拖动Editor的Border时候,FEngineLoop::Tick()会被阻塞。而Slate的Render不会被阻塞。
在正常情况下,FEngineLoop::Tick不会被阻塞,在该函数中,会调用EndFrameRenderThread,在每次EndFrame的时候,会进行UploadHeapAllocator的Cleanup(释放内存)。
但当拖动Border的时候,FEngineLoop::Tick会被阻塞,ResizeWindow的时候,在FSlateApplication::OnSizeChanged中会调用PrivateDrawWindows(Window);当DrawWindows的时候,会申请内存(AllocateResource,在Pool中一直分配内存,CreateNewPool),这个过程中由于不会触发EndFrame,不会释放内存,但会一直申请新的内存,导致内存一直增加。
[Image Removed],可以看到共享GPU内存会一直增加,当分配不出来内存的时候就会Crash。