① 执行摘要
② 设备与方法
| 项目 | iOS 端 | 鸿蒙端 |
|---|---|---|
| 设备 | iPhone 12 Pro(iPhone13,3 / D53pAP,A14) | HUAWEI Mate 80 Pro(SGT-AL00B) |
| 系统 | iOS 14.8.1(Build 18H107,xnu-7195.141.46~1,越狱 Taurine) | HarmonyOS 7(HongMeng 内核 1.13.0,aarch64) |
| 物理内存 | 5736 MB(hw.memsize) | 11426 MB(MemTotal)+ 12GB zswap 池 |
| 分辨率 | 2532×1170 @458ppi(2.96M 像素) | 1280×2832(3.62M 像素,+22.4%) |
| 淘宝版本 | 10.66.20(build 58416901) | 10.66.40(versionCode 801,HarmonyOS 原生 ArkTS/ArkUI 重写版) |
| 主口径 | phys_footprint(task_info 实测;jetsam 同款计费:私有脏页+压缩页+IOKit 映射+非易失 purgeable,不含干净文件页) | Pss+SwapPss(/proc/<pid>/smaps_rollup + status 实测;按比例分摊驻留页 含文件页 + 已换出匿名) |
| 辅口径 | RSS / internal / memledger VM-tag 构成 | RSS / VmHWM / hidumper --mem 分类构成 |
| 测量工具 | footprobe(task_info)· memledger(VM tag×三分类)· lsopen(深链,经 R4 人眼闭环验证)· wakehold(防锁屏) | hidumper --mem · smaps_rollup · /proc/status · uitest 真实触摸(截图像素差分验证) |
测量协议(双端语义严格一致)
| 阶段 | 定义 | iOS 采样点 | 鸿蒙采样点 |
|---|---|---|---|
| P0 基线 | 确保淘宝未运行,记录系统内存 | vm_stat | meminfo + memview |
| P1 冷启动 | 拉起淘宝 → 首页(自动播放/预加载为真实负载) | t+10/30/60/120s | t+12/30/62/120s |
| P2 首页稳态 | 停留首页不操作至启动后 6 分钟 | 每 60s(plateau=最后 3 次均值) | 每 60s(同) |
| P3 搜索"手机" | iOS:lsopen 深链(暖态)· 鸿蒙:uitest 真实触摸输入 | +60/+120s | 导航中 + 终态 |
| P3b 商品详情 | 补充阶段(仅 iOS 达成,鸿蒙被登录墙阻断) | +45/+90s | — |
| P4 切后台 | iOS:uiopen prefs: · 鸿蒙:Home 键 | +30/+120s | +30/+120s |
| P5 退出 | 杀进程,记录系统恢复 | vm_stat | meminfo |
执行轨迹:iOS 11:21:31–11:33:34 一轮跑通(pid 73715 全程稳定,零干扰);鸿蒙两轮(第一轮被用户后台化作废重做,逐样本 oom_score_adj=0 前台校验)。
界面一致性验证(事后审计,15:09–15:25)
模型无图像输入,采用三重程序化证据:iOS syslog 页面生命周期事件(idevicesyslog 29280 行,提取 pageName/VC 名);双端截图特征分析(Pillow 亮度/熵/主色占比,与"布局树证实"的标注参照页分类);鸿蒙 dumpLayout 布局树(注:淘宝鸿蒙版内容页不暴露无障碍树,仅登录页/系统应用可抓)。
| 阶段 | iOS 界面(证据) | 鸿蒙界面(证据) | 同界面? |
|---|---|---|---|
| P0 / P5 | 无 UI(系统基线) | ✓ | |
| P1 峰值 | 首页启动:syslog Page_Launch→Page_Home + 开屏广告(choose_ad) | 登录页:冷启落点复测 t+15/45/95/300s 截图特征恒=登录页参照(亮236/熵1.43/主色59%) | ✗ 首页 vs 登录页(已在 P1 处标注) |
| P2 稳态 | 首页 feed:复现轮 syslog Page_Home + footprint 签名吻合(304.1 vs 主测 303.5) | 访客首页 feed:截图特征=暗色首页参照(亮55/熵2.30),P1 t120 与 P2 重做两张图 11 分钟跨度特征一致 | ✓ 同为首页 feed(内容个性化差异不可避免;鸿蒙为用户关闭登录页后的访客态) |
| P3 | 搜索结果列表→详情:syslog Page_TBXSearchMainLayered + Page_SearchItemList + Page_Detail;全程登录 API 调用 0 次 | 未达成:搜索执行后停在近空白白页(熵0.94/主色85.9%),"手机"输入的是登录页输入框 | ✗ 不可比 |
| P4 | 后台(footprint 稳定 + 进程活) | 后台(oom_score_adj 300/380 + 桌面截图特征=launcher 参照) | ✓ 无 UI 态 |
审计方法与完整时间线:ui-verify/README.md;勘误已同步至 ③⑥⑧ 节。关键新发现:鸿蒙淘宝冷启动落在登录页且 300s 不消失(上午 P2 稳态是用户手动关闭登录页后到达的访客首页);登录页这种极简 UI 稳态仍占 Pss+Swap≈466MB,佐证鸿蒙端内存大头是 ArkTS 运行时/框架而非页面内容(见 D-2)。
③ 分阶段内存对比
图 1 · 分阶段主进程内存(7 个关键状态点)
iOS=phys_footprint · 鸿蒙=Pss+SwapPss · 单位 MB图 2 · 冷启动 → 稳态时间线(鸿蒙 zswapd 主动换出过程)
同一起点对齐 · iOS 8 点 / 鸿蒙 4 点分阶段明细表
| 阶段 | iOS footprint (MB) | iOS RSS (MB) | 鸿蒙 Pss+Swap (MB) | 鸿蒙 PSS / Swap (MB) | 注释 |
|---|---|---|---|---|---|
| P1 冷启峰值 | 335.4(t+30s) | 565.4 | 474.7(t+12s) | 472.1 / 2.6 | 鸿蒙 VmHWM 609.0,RSS 589.1;iOS 峰后 90s 回落 9.5%。⚠ 峰值时刻页面不同:iOS=首页启动(含开屏广告)/ 鸿蒙=登录页(冷启落点实证:登录页 300s 不消失) |
| P1 末(t+120s) | 303.7 | 562.6 | 437.1 | 290.3 / 146.8 | 鸿蒙靠换出回落,iOS 靠缓存修剪回落 |
| P2 稳态 plateau | 303.5 | 562.5 | 440.5 | 280.4 / ≈160 | iOS 三点 303.6/303.6/303.4 极稳;鸿蒙 render 子进程另 +14.4(PSS) |
| P3 搜索"手机" | 310.0(+6.7 暖态) | 575.4 | 502.5(受阻态) | 327.1 / 175.4 | ⚠ 鸿蒙搜索执行被登录墙阻断,终态=近空白白页(非搜索结果页,UI 审计修正);iOS 复现轮实证落地搜索结果列表,见上方注释 |
| P3b 商品详情 | 314.5(+4.5 暖态) | 583.3 | — | — | 鸿蒙被登录墙阻断;R4 冷会话 iOS 详情 +56.4~64.2MB(缓存摊销效应) |
| P4 后台 +30s | 301.6 | 571.7 | 495.7 | 198.6 / 297.1 | 鸿蒙 PSS 骤降 128.5(30s 内),总足迹基本不变 |
| P4 后台 +120s | 301.6 | 571.4 | 496.2 | 199.0 / 297.2 | iOS 进程原样驻留;鸿蒙进程保留(oom_score_adj 300→380) |
④ 内存构成分解
图 3 · 稳态内存构成(P2,统一六类映射)
iOS=memledger VM-tag est · 鸿蒙=hidumper(Pss+Swap)· 单位 MB构成映射明细(memledger VM-tag ↔ hidumper 分类)
| 功能类别 | iOS (MB) | iOS 来源 tag | 鸿蒙 (MB) | 鸿蒙来源 | 差 |
|---|---|---|---|---|---|
| 原生分配器堆 | 159.9 | MALLOC_LARGE 63.7+NANO 59.8+TINY 19.1+SMALL 14.1+TCMALLOC 3.2 | 154.5 | native heap(jemalloc) | +5.4 |
| 动态运行时+未标记匿名 | 100.4 | tag0"?"(自研分配器/解码器/JS 不可分离) | 108.1 | ark ts heap 67.4 + AnonPage other 40.7 | -7.7 |
| 图形/UI 缓冲 | 31.6 | CG_DATA 19.5+LAYERKIT 4.6+IOACCEL 4.0+IOSURFACE 3.5 | 59.7 | Graph 48.0 + GL 11.7 | +28.1 |
| 代码/资源文件页(计费) | ≈0* | 干净文件页不计费(est_file 46.0 为 dirty 部分混入各类) | 149.9 | .so 105.3 + .hap 43.7 + ttf/db 0.9 | +149.9 |
| WebView 常驻 | 0(子进程另计) | WebContent×2+Networking 独立进程(+55.3) | 14.7 | arkweb-pa heap(进程内) | 形态差 |
| 其他(栈/溢出/杂项) | 14.3 | STACK 4.2+TAG_OVERFLOW 10.1 | 7.7 | stack 4.1 + FilePage other 3.8 | +6.6 |
⑤ 三层口径:同一个问题,三个相反的答案
图 4 · 三层口径对比(P2 首页稳态)
单位 MB · 鸿蒙"纯匿名脏页"另含图形缓冲则 341.1| 口径 | iOS | 鸿蒙 | 差 | 语义 |
|---|---|---|---|---|
| ① 系统计费足迹 | 303.5(phys_footprint) | 440.5(Pss+SwapPss) | 鸿蒙 +137.0(+45.1%) | 系统"记在 App 账上"的内存:jetsam / LMK 治理依据 |
| ② 纯匿名脏页 | 302.1(internal,全驻留) | 293.1(含图形缓冲 341.1) | iOS −9.0(−3.0%)~ 鸿蒙 +39.0(+12.9%) | App 真实私有分配(堆/栈/匿名 mmap) |
| ③ 驻留 RSS | 562.5 | 411.5 | iOS +151.0(+36.7%) | 实际占用的物理内存(共享页全额计) |
为什么 ③ 反转:鸿蒙 zswapd 已把 ~160MB 换出到 12GB zswap 池(物理内存让出);iOS 无内存压力时全量驻留(含 51.4MB 可逐出 purgeable、共享 dyld 缓存页)。"iOS 更省"与"鸿蒙更省"各自成立于不同口径——这是跨平台内存对比最容易踩的坑,也是本报告全部结论都带口径标注的原因。
⑥ 差异归因结论
| # | 结论 | 支撑数据 | 机制 | 置信度 |
|---|---|---|---|---|
| D-1 | 稳态计费足迹鸿蒙 +45%,但 70%+ 来自口径与运行时形态,真实分配差距 ≤13% | 440.5 vs 303.5(+137.0);文件页计费差 ~149.9 + ArkTS 堆 67.4 + 图形 +28.1;纯匿名脏页 293.1~341.1 vs 302.1 | iOS footprint 只记不可逐出内存;PSS 按比例记全部驻留页(含可重读文件页) | 实测确认 |
| D-2 | 冷启动鸿蒙更重更快到峰(+41.5%,t+12s 即达峰)——且峰值时仅为登录页 | 鸿蒙 t12=474.7(RSS 589.1/VmHWM 609);iOS t30=335.4→t120 回落 9.5%;UI 审计:鸿蒙冷启落点=登录页且 300s 不消失(极简 UI 仍达 475MB),复测登录页稳态 Pss+Swap≈466 | ArkTS 运行时+ArkUI 框架全量初始化+hap 资源加载集中在启动窗口,内存大头是运行时而非页面内容;iOS 依赖共享 dyld 缓存(不重复计费)且快速修剪缓存 | 实测确认 |
| D-3 | 后台策略根本不同:鸿蒙"换出不杀" vs iOS"原样驻留" | 鸿蒙 Home 后 30s PSS 327.1→198.6(−39.3%),121.7MB 转 SwapPss,总足迹 −1.3%,进程存活(oom_adj 300→380);iOS 后台 120s 仅 −4.1%,compressed 恒 0 | 鸿蒙 zswapd 按水位主动换出、保进程优先;iOS 无压力时后台 App 完整驻留(真回收靠内存压力+jetsam/冻结,本轮未触发) | 实测确认 |
| D-4 | 鸿蒙 zswapd 前台空闲即换出;iOS 压缩器纯 reactive | 鸿蒙空闲 30s 换出 144.3MB(PSS −178.9,登录页静置期);iOS 全程 compressed=0(free 660MB~1.86GB 未近水位) | HongMeng avail_buffer 水位驱动 proactive 回收 vs XNU 压缩器仅在 free<free_target(2000 页)介入 | 实测确认 |
| D-5 | 进程形态:iOS 冷启动即孵化 2×WebContent+1×Networking;鸿蒙 render 子进程常驻 | iOS 暖启动+35s 家族 272.8+24.2+25.6+5.5=328.1;鸿蒙 render 14.0~27.3 随负载波动 | iOS WebKit 每容器独立进程;鸿蒙 ArkUI 渲染管线子进程化 | 实测确认 |
| D-6 | 图形内存鸿蒙高 ~28MB,分辨率差解释约 1/4~1/3 | 图形类 59.7 vs 31.6~35.5;像素 3.62M vs 2.96M(+22.4%) | 更多像素→更大图层缓冲/纹理;其余为渲染管线与缓冲池策略差异(render 子进程独立缓冲) | 数据推断 |
| D-7 | ArkTS 堆 67.4MB 是鸿蒙原生重写的独立架构成本 | ark ts heap 67.4(占鸿蒙匿名脏页 23%),iOS 无独立 JS 堆分类(混入 tag0/MALLOC_LARGE,不可分离) | 鸿蒙版为 HarmonyOS NEXT 原生 ArkTS/ArkUI 重写(compileSdk 6.0.0.47);iOS 版为成熟 ObjC/Swift 基建——同为"淘宝",技术栈已分叉 | 数据推断 |
| D-8 | 版本对齐良好,结论不受版本偏差主导 | 10.66.20 vs 10.66.40(两个补丁版);R4 历史交叉(9 月,10.65.20):冷启 283.7→325.3 / 搜索 +33.9 / 详情 +56.4~64.2,与今日量级一致 | 同设备同 App 跨月行为可复现 | 实测确认 |
| D-9 | iOS 缓存摊销效应显著:暖态页面成本近乎免费(双轮实证) | 暖态深链搜索 +6.7 / 详情 +4.5(复现轮 syslog 实证 Page_SearchItemList 与 Page_Detail 均真实加载,且 0 次登录 API,排除登录墙假象)vs R4 冷会话 +33.9 / +56.4~64.2 | 首页静置期预加载的模块/图片被后续页面复用——衡量"页面成本"必须区分冷/暖缓存 | 实测确认 |
| D-10 | RSS 视角反转:iOS 驻留物理内存更多(+36.7%) | 562.5 vs 411.5(P2) | 鸿蒙 ~160MB 已换出;iOS 全量驻留(含 purgeable 51.4+共享 dyld 缓存)——两端的"省内存"是两种不同哲学 | 实测确认 |
⑦ 系统内存视角
iOS(XNU:全驻留 + reactive 压缩)
全程 compressed = 0(压缩器从未介入);Pages free 从 P0 的 660MB(42267×16KB)升至 kill 后的 1.86GB(119023×16KB)。设备 5.7GB 内存、无压力,App 全量驻留,后台不收缩。真回收依赖内存压力(压缩器→换出→jetsam/冻结链),本轮未触发。
ios-vmstat-p0.txt / ios-vmstat-p5.txt / ios-samples.jsonl vm 字段鸿蒙(HongMeng:水位驱动 + proactive zswap)
12GB zswap 池(SwapFree 基线 11083MB);MemAvailable P0=5219MB → kill 后 3528MB(⚠ Δ 含用户同时段使用其他 App 的干扰,不可全归因淘宝)。zswapd 在前台空闲期(登录页静置)即换出 144MB、后台 30s 再换出 121.7MB——系统持续把匿名页压进 zswap 池换取驻留内存余量,代价是再访问时的换入延迟。
ohos-samples.txt /proc/meminfo+memview 各采样点⑧ 测量局限(诚实边界)
- P3 暖冷不对称且鸿蒙未达成:iOS 深链在 6 分钟热缓存后执行(复现轮 syslog 实证搜索结果/详情页真实加载、无登录墙);鸿蒙导航被登录墙阻断,终态为近空白白页,502.5MB 为受阻状态数值——原"搜索终态"表述系 UI 审计后勘误。
- 双端登录态不同(测量条件差异):iOS 侧全程无登录墙(会话有效或免登录浏览,登录 API 调用 0 次);鸿蒙侧无有效会话——冷启动停在登录页、搜索执行被登录墙阻断。P1 峰值因此测的是"登录页启动"(iOS 为"首页启动"),P2 稳态鸿蒙为访客首页(用户关闭登录页后),两端 feed 内容个性化程度不同。此差异属设备状态,非平台必然。
- 单日单机单次样本:iOS 一轮零干扰;鸿蒙两轮(第一轮被用户干扰作废重做)。无跨日重复样本。
- iOS 越狱环境(Taurine):越狱守护进程不属淘宝进程,不影响其 footprint 读数,但系统行为与量产机理论上有微小差异。
- iOS 家族子进程为暖启动补测(+55.3MB):P1–P5 主测量期间 WebKit 子进程因 ppid=1 未被自动采到。
- 两端 P5 的系统恢复量均含扰动(用户同时段操作),只作方向参考。
- 口径非完美对齐:footprint 不含干净文件页/共享页,Pss+SwapPss 含文件页按比例分摊;本报告用三层口径 + 构成映射缓解,残余误差估计 ±5~8%。
⑨ 附录
原始数据文件(raw-data/taobao-mem/)
| 文件 | 内容 |
|---|---|
| ui-verify/ 目录 | 界面一致性审计(15:09–15:25):iOS 复现轮 syslog 29280 行 + footprint 签名、鸿蒙冷启落点截图序列 t+15/45/95/300s、勘误说明 README.md |
| ios-summary.json / ohos-summary.json | 双端结构化摘要(全阶段采样、构成、元数据) |
| ios-samples.txt + .jsonl / ohos-samples.txt | 逐采样点原始输出(20+ 点,含 vm_stat/smaps/hidumper) |
| ios-memledger-p2.json / -p3.json | iOS VM-tag 构成分解(三分类归因) |
| ohos-hidumper-breakdown.txt / ohos-data-table.txt | 鸿蒙 hidumper 构成明细与总表 |
| ios-children-check.txt | iOS 进程家族补测(WebContent/Networking) |
| ios-vmstat-p0/p5.txt / ios-run.log | iOS 系统基线/恢复与执行轨迹 |
| ohos-p*.jpeg / *-layout.json(47 个,索引 ohos-files-index.md) | 鸿蒙每步截图像素差分验证 + UI 布局证据 |
| analysis.md | 完整分析文档(本页的数据底稿) |
历史交叉验证
R4(2026-09-09,同设备,iOS 淘宝 10.65.20,冷会话旅程,人眼逐页确认):冷启 283.7→325.3MB / 搜索 +33.9 / 详情#1 +56.4 / 详情#2 +64.2 / 后台 −16.3 / 回前台 506.3——与今日 iOS 数据量级一致。来源:taobao-test-kit/raw-data/taobao-journey3-summary.txt。
产出方式
DeepSeek Harness swarm 多智能体团队(taobao-mem-compare)协作:iOS 测量(footprobe/memledger,ios-probe)、鸿蒙测量(hidumper/uitest,ohos-probe)、报告骨架(web-builder)、跨端归因与成稿(leader 完成 synthesizer 未竟部分)。全部测量于 2026-10-13 当日在真机执行,无模拟数据。