ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

提交量真相:别被内存占用骗了

提交量真相:别被内存占用骗了 提交量Commit就是系统已经答应为程序提供的内存额度。这里主要讲Windows的“提交量”。用订酒店来理解假设游戏要使用 1 GB 内存可以分成三个概念内存概念酒店比喻保留虚拟地址先圈出一段房间编号并没有订房提交内存正式预订酒店必须保证有地方住驻留物理内存客人已经入住实际占用了房间关键是订了房不代表现在已经入住但酒店不能把这份预订当作不存在。所以提交量不等于当前占用的物理内存。一个游戏的例子假设游戏保留了8 GB 虚拟地址空间其中提交了2 GB当前只有500 MB的相关页面驻留在 RAM。可以理解成保留 8 GB先留出这么大的地址范围。 提交 2 GB系统承诺为其中这 2 GB 提供后备支持。 驻留 500 MB当前真正放在 RAM 里的这部分是 500 MB。这些已提交页面有些可能还没被实际访问有些可能在 RAM 中有些可能被换出到分页文件。不是“提交了 2 GB就立刻占用 2 GB RAM”。为什么提交量会有上限因为系统不能无限承诺。Windows 的系统提交上限大致与以下两项有关物理内存 RAM 分页文件容量实际数值还会受到系统开销和配置影响以系统显示为准。例如任务管理器显示已提交20 / 24 GB意思是20 GB整个系统当前已经承担的提交量24 GB当前系统提交上限大约还剩4 GB提交余量。不是说 RAM 已经用了 20 GB也不是说分页文件用了 20 GB。如果提交量接近上限又无法提高上限游戏继续申请需要提交的新内存 ↓ 系统无法再承诺 ↓ 分配失败 ↓ 游戏若没处理好就可能崩溃一句话记住虚拟地址是“留位置”提交量是“做承诺”物理驻留是“现在实际住进去”。排查游戏内存问题时既要看RAM 实际占用也要看系统提交量离上限还有多远。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进