You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS VM Tracker中'Dirty Memory'与'Dirty Size'的区别解析

Xcode Instruments中Dirty内存类型与Dirty Size指标的区别

Dirty内存类型

这是内存分配的分类标签,用来标记某类分配的「属性特征」。像malloc这类堆分配,从设计逻辑上就属于容易产生脏页的类型,所以被归类为Dirty类型——它描述的是分配的固有属性,和这块内存实际有没有产生脏页完全没关系。

Dirty Size指标

这是实际被修改过的物理内存页的总大小。当你用malloc分配内存时,系统只是先给你划了一块虚拟地址空间,并没有立刻分配物理内存页;只有当你真正往这块内存里写数据时,对应的虚拟页才会被映射到物理页,同时标记为「脏页」(因为内容和磁盘上的原始副本不一样了),这部分被修改过的物理页的总和就是Dirty Size。

举个实际例子:
执行int *array = malloc(2000 * sizeof(int));时,malloc返回的虚拟地址还没被写入任何数据,所以这部分分配属于Dirty内存类型,但它的Dirty Size是0。只有当你给array赋值(比如array[0] = 1;)后,对应的物理页才会被标记为脏页,Dirty Size才会跟着增加。

结合WWDC 2022提到的内存分类逻辑:Dirty内存本身指的是驻留物理内存占比高、且内容已被修改的内存;Instruments里的Dirty类型是提前给高风险分配打标签,方便追踪,而Dirty Size则是这类分配实际产生的脏页规模。

内容的提问来源于stack exchange,提问作者I_Jemin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:43:20