Unreal Engine 内存池浅谈[11]——总结篇

Unreal Engine 内存池浅谈------总结篇

写在最后:这一套东西我陪你从 Binned1 讲到 Binned3,讲到甘蔗店,讲到移动端血泪史,现在全部浓缩成一张表 + 10 条金句,贴墙上当传家宝。

官方内存分配器终极对比表

分配器 适用平台 小块速度 内存利用率 碎片控制 移动端友好度 2025 年推荐指数 一句话评价
Binned1 考古级(UE3) 30~80ns 85% 中等 ★★★★☆ ★☆☆☆☆ 老古董,Free 要传 Size
Binned2 移动端/主机/Switch 15~30ns 92% 优秀 ★★★★★ ★★★★★ 移动端永远的神
Binned3 PC/高端主机/车载 8~15ns 96%+ 极致 ★☆☆☆☆ ★★★★★ PC 王者,移动端毒药
TBB Windows 高并发服务器 20~40ns 90% ★★☆☆☆ ★★★★☆ 服务器专用
Jemalloc Linux 服务器 25~50ns 88% ★★☆☆☆ ★★★☆☆ 老将,但不如 Binned
系统 malloc 兜底 200~800ns 60~75% ★☆☆☆☆ ★☆☆☆☆ 永远不要默认用

2025 年项目选型铁律

  1. 移动端(Android/iOS/Switch) → 强制 Binned2(-UseMallocBinned2)
  2. PC/主机/高端车载 → 默认 Binned3 + ThreadCache 256 + PageSize 131072
  3. 服务器/工具 → TBB 或 Jemalloc(看平台)
  4. 每帧临时对象 → Frame Arena / FScopedScratchMemory
  5. 热点 TArray → TPoolAllocator
  6. 大纹理/网格 → 自定义大块池或 FMallocLarge
  7. 长时间运行不膨胀 → Binned2 + 固定 Hash 表 + Bundle 归还
  8. 想卷性能 → 自己写瑞士表 + wyhash + SIMD 位图(能干到 8ns)
  9. 想躺平 → Binned3 默认配置 + 开箱即用
  10. 永远别干的事 → 在移动端开 Binned3、在 GameThread 里 new 小对象

十句金句

  1. Binned3 是核弹,移动端是核废料。
  2. 移动端第一步永远是:把 Binned3 关了。
  3. 每帧分配 >1ms,必开 Frame Arena。
  4. 热点 TArray 不换 TPoolAllocator,就是自愿掉帧。
  5. 哈希表快 1ns,帧率就能多 1 帧。
  6. 负载因子 >0.75,就是在给 GC 送人头。
  7. 移动端敢开 RHIThread,就是在给驱动送 Bug。
  8. 8ns 分配不是神话,Binned3 + 瑞士表 + SIMD 位图,2025 年随便拿。
  9. 内存池不是配置,是信仰。
  10. 学会了 Binned,你就学会了 UE 性能的一半。

至此,Unreal Engine 内存池浅谈系列完结。

从 41 个抽屉到 8 纳秒,从甘蔗店到车载核弹,

我们一起把 Epic 这 19 年的黑魔法彻底拆穿了。

愿你在 2025 年的每个项目里,都不再被内存池支配恐惧。

------ 写给所有还在和 UE 内存战斗的你,

下次见!

相关推荐
熊猫悟道16 小时前
Unity shader 之,Shader内部时间离散处理
unity·游戏引擎·材质·着色器
PA_17 小时前
unity Component-Based Architecture游戏框架
游戏·unity·游戏引擎
jtymyxmz21 小时前
《Unity Shader》11.3.2 广告牌技术
unity·游戏引擎
jtymyxmz1 天前
《Unity Shader》11.3.1 流动的河流
unity·游戏引擎
小马过河R1 天前
开发游戏需要哪些岗位和角色参与
游戏·游戏引擎·游戏程序
jtymyxmz1 天前
《Unity Shader》11.3.1 续 流动的水流的阴影
unity·游戏引擎
世洋Blog1 天前
Unity性能优化-2d游戏的DrawCall
游戏·unity·面试·性能优化·游戏引擎
jtymyxmz1 天前
《Unity Shader》11.2.2 滚动的背景
unity·游戏引擎
Tatalaluola1 天前
Unity使用EPPlus读取写入表格
unity·c#·游戏引擎·excel