返回调度中心
Workflow 05 / Recycling

资源循环:物理停机

显存强制回收、mmap 句柄关闭与停机规程

Sequence / 系统停机回收时序
            sequenceDiagram
                participant E as Unreal Engine
                participant SUB as Subsystem
                participant K as Kernel (DLL)
                
                E->>SUB: 1. Deinitialize() / EndPlay()
                SUB->>K: 2. 物理截断所有推流管道
                SUB->>K: 3. UnloadModel()
                K->>K: 4. 销毁 WebGPU 缓冲区
                K->>K: 5. 物理断开 mmap 映射句柄
                Note over SUB, K: 显存资源完全归还 OS
                K-->>SUB: 6. 确认资源空
                SUB->>SUB: 7. 销毁全局单例实例
            
01 / 概念深度:显存的“非法占有”与归还

由于 LiteRT-LM 是外部 DLL 管理显存,虚幻引擎的 RHI 层无法感知其存在。

资源残留危害 (Leaking)

如果不调用 UnloadModel,即便退出了 PIE,数 GB 的显存依然会被物理锁定。这会导致下次运行游戏时显存不足(OOM)或者外部渲染软件崩溃。

mmap 强制断开

物理映射的模型文件如果不解绑,Windows OS 会锁定该文件,导致您无法在资源管理器中移动、删除或替换模型文件。

02 / 源码实战 Demo (C++)

解析如何在关卡结束时优雅回收:

// 在 Provider 或 Subsystem 代理中执行
void MyDeinit() {
    // 1. 物理清空所有 Session
    Subsystem->ReleaseAllSessions();

    // 2. 物理卸载内核并释放显存
    FLiteRtLmUnrealApi::UnloadModel();
}