自定义F类中U类指针管理(UEC++CollectGarbage)
UObject 系统和垃圾回收
UObject:UObject及子类由UE的垃圾回收(GC)系统管理。UE使用引用计数来跟踪对象的生命周期。当一个UObject实例不再被任何强引用持有时,GC会将其标记为可回收。
标记-清除(Mark-and-Sweep):UE的GC系统采用标记-清除算法,这类似于C#和Java的GC机制。在GC周期中,活跃对象被标记,然后未标记的对象被清除。
使用AddToRoot方法将对象添加到根集合中可以防止对象被垃圾回收。然而,如果不小心使用AddToRoot,可能会导致内存泄漏。
正确地使用AddToRoot和RemoveFromRoot:确保在适当的时机调用RemoveFromRoot,从根集合中移除对象。如果没有及时移除对象,即使你不再需要该对象,它也不会被垃圾回收。
使用AddToRoot时:
1、需要特别注意避免循环引用。如果存在循环引用,对象将永远无法被垃圾回收,从而导致内存泄漏。
2、一般只有在确实需要在整个应用程序生命周期内保持对象,对于临时对象或生命周期较短的对象并不需要使用AddToRoot。
(如果使用AddToRoot的对象涉及异步操作(如异步加载资源),需要确保在异步操作完成后手动调用RemoveFromRoot)
重写AddReferencedObjects函数
给需要不回收的U类打上标记如下图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理