我的 QA 模拟器占了 9.8 GB,原因却不在我的应用。它的应用容器只占 0.34 GB。其余都是 iOS 填满的:锁定屏幕海报快照的缓存、系统日志、下载的 Siri 和语言资源,以及一个符号缓存。我量了 Mac 上的十个模拟器,每一个里应用所占的份额都很小。
基本原则:擦除模拟器之前先量一量,然后用 xcrun simctl 擦除或删除它。不要手动删除它 data 文件夹里的文件夹。
快速回答
- 找出占空间大的模拟器:
du -sh ~/Library/Developer/CoreSimulator/Devices/* | sort -h | tail。 - 用
xcrun simctl list devices把每个 UDID 对应到名称。 - 看看其中一个的内部:
du -h -d 4 ~/Library/Developer/CoreSimulator/Devices/<UDID>/data | sort -h | tail -20。 - 如果不再需要它的状态,就先关机再清空:
xcrun simctl shutdown <UDID>,然后xcrun simctl erase <UDID>。 - 从来不用的模拟器,用
xcrun simctl delete <UDID>移除。
一个模拟器的 9.8 GB 去了哪里
在我的第一次测量中,一个 QA 模拟器占了 Devices 文件夹的一半。有位读者问里面装的是什么,于是我打开了它的 data 文件夹。这台设备是 iOS 27.0 上的 iPhone 18 Pro 模拟器,测量时处于启动状态。
data 内的文件夹 | 大小 |
|---|---|
Library/Application Support/PRBPosterExtensionDataStore | 2.88 GB |
var/db/diagnostics | 2.07 GB |
private/var/MobileAsset | 2.03 GB |
Library/Caches/com.apple.coresymbolicationd | 1.13 GB |
var/db/uuidtext | 0.49 GB |
Containers,所有应用容器 | 0.34 GB |
整个 data 文件夹 | 9.81 GB |
Containers 里放着已安装的应用、它们的数据容器、应用组和扩展数据。我的应用和它的测试写入的所有内容,都在这 0.34 GB 里。
十个模拟器并排对比
我的 Mac 上有 53 个模拟器。其中 43 个各占约 20 MB,也就是一台从没运行过应用的设备的大小。剩下的十个是我在用的。大小单位为 GB。
diagnostics 加 uuidtext)、MobileAsset 和其他所有内容。圆点标出的是已启动的设备。| 模拟器 | iOS | 状态 | data | 海报存储 | diagnostics | MobileAsset | Containers |
|---|---|---|---|---|---|---|---|
| QA 设备,iPhone 18 Pro | 27.0 | 已启动 | 9.81 | 2.88 | 2.07 | 2.03 | 0.34 |
| iPad Pro 13-inch (M5) | 27.0 | 已启动 | 4.59 | 1.65 | 0.21 | 1.70 | 0.16 |
| iPhone 16 | 18.6 | 已关机 | 3.14 | 0.03 | 1.22 | 0.79 | 0.24 |
| iPhone SE (3rd generation) | 26.5 | 已启动 | 2.62 | 0.04 | 0.36 | 1.00 | 0.31 |
| iPhone 11 Pro | 26.5 | 已关机 | 2.36 | 0.00 | 0.15 | 1.21 | 0.12 |
| iPhone 16,自用测试构建 | 18.6 | 已关机 | 2.03 | 0.03 | 0.36 | 0.90 | 0.11 |
| iPhone 16 Pro Max | 18.6 | 已启动 | 1.58 | 0.05 | 0.05 | 0.90 | 0.15 |
| iPhone 16 Pro Max | 27.0 | 已关机 | 1.53 | 0.17 | 0.02 | 0.17 | 0.16 |
| iPad Pro 11-inch (M4) | 18.6 | 已关机 | 1.47 | 0.03 | 0.09 | 0.78 | 0.07 |
| iPhone SE (3rd generation),第二个应用 | 18.6 | 已关机 | 0.63 | 0.03 | 0.01 | 0.21 | 0.08 |
有三个规律很明显:
- Containers 从未超过 0.34 GB。 跟系统数据一比,我测试的那些应用只是个零头。
- 每个模拟器上都有 MobileAsset。 它从 0.17 到 2.03 GB 不等。
- 海报存储只在两台已启动的 iOS 27.0 设备上变得很大。 在 iOS 18.6 和 26.5 上,它一直低于 0.05 GB。只凭两台设备还不足以把原因归到 iOS 27.0 头上,但差距很大。
每个文件夹里装着什么
PRBPosterExtensionDataStore:锁定屏幕海报快照
这个文件夹名和 GalleryCache、SnapshotCache.cachedb 一样,是 iOS 27.0 模拟器运行时中私有框架 PosterBoard.framework 里的字符串。这个运行时还自带一个系统应用 PosterBoard.app,标识符为 com.apple.PosterBoard。文件夹里的子文件夹带着 Apple 海报扩展的 ID:WeatherPoster、EmojiPoster、PhotosPosterProvider、KaleidoscopePoster 等。Apple 关于创建自定义锁定屏幕的指南,把天气、天文和照片列在锁定屏幕墙纸之中。
在我的 QA 设备上,这个文件夹里有 6,776 个文件。其中 2,911 个是 .atx 快照文件,每个约 1 MB,名为 Composite.atx、Background.atx、Foreground.atx 和 Floating.atx,加起来 2.9 GB。在那台 iPad 上,全部 939 个快照文件的修改日期都是测量当天,所以设备在运行时会写入这个缓存。我不知道是什么让它变大,Apple 也没有为它提供文档。
var/db/diagnostics 和 var/db/uuidtext:系统日志
这两个文件夹存放的是统一日志系统的数据。man log 把日志存储描述为一个系统日志数据库,就像 /var/db/diagnostics 里的那个,旁边还有一个类似 /var/db/uuidtext 的 uuidtext 目录。每个模拟器都在自己的 data 文件夹里保留一份。在我的设备上,它从 0.01 到 2.07 GB 不等,QA 设备上另有 0.49 GB 的 uuidtext。
private/var/MobileAsset:iOS 下载的资源
在 QA 设备上,AssetsV2 里的资源集以 Siri 和语言功能命名:
| 资源集 | 大小 |
|---|---|
com_apple_MobileAsset_UAF_Siri_Understanding | 805 MB |
com_apple_MobileAsset_UAF_LinguisticData | 409 MB |
com_apple_MobileAsset_UAF_Siri_TextToSpeech | 289 MB |
com_apple_MobileAsset_UAF_SearchQueryUnderstanding | 106 MB |
com_apple_MobileAsset_TTSAXResourceModelAssets | 96 MB |
这些是模拟器自己下载的。Apple 开发者论坛上有位开发者报告,在 iOS 26.5 上同一个文件夹增长了几十 GB,下载者是 nsurlsessiond。这个帖子没有人回答。
com.apple.coresymbolicationd:符号缓存
coresymbolicationd 的 man page 把它称作针对系统库的“管理调试符号缓存的守护进程”(daemon to manage debug symbols cache)。它在 QA 设备上占了 1.13 GB,在其他设备上几乎为零。
模拟器太大时我怎么做
我不会打开这些文件夹去删文件。Apple 没有为它们提供文档,我也说不清删掉一半的海报存储或日志存储会对模拟器造成什么影响。受支持的工具都作用于整台设备:
xcrun simctl erase <UDID>清空内容和设置,保留设备。先把设备关机。xcrun simctl delete <UDID>移除设备。xcrun simctl delete unavailable移除当前 Xcode SDK 不再支持的设备。
擦除会丢掉已安装的应用、它们的数据以及上面提到的每个系统文件夹,所以你得重新安装应用、重新登录。为了某个 bug 或某项测试仍需要其状态的设备,要留着。设备再次运行后,海报存储、日志和资源都可能重新长回来,所以擦除换来的是空间,并不能解决增长问题。
CoreSimulator Data 位于 Review before cleaning 下,和 DerivedData 分开,后者下次构建时会重新生成。截图来自更早的一次扫描,所以大小与本文不同。我是怎么测量的
我在 2026 年 10 月 26 日做了测量,用的是一台搭载 M4 的 Mac mini,系统是 macOS 27.0.1,Xcode 27.1。所有命令都只读取数据:
xcrun simctl list devices --json
du -sk ~/Library/Developer/CoreSimulator/Devices/<UDID>/data
du -k -d 4 ~/Library/Developer/CoreSimulator/Devices/<UDID>/data | sort -rn | head -20
find ~/Library/Developer/CoreSimulator/Devices/<UDID>/data/Library/Application\ Support/PRBPosterExtensionDataStore -name '*.atx' | wc -l
大小来自 du,除以两次 1024,和 du -h 输出的是同样的二进制单位。每一行里的文件夹互不重叠,只是 Containers 包含了它的子文件夹。已启动的模拟器会持续写入,所以它们的数字每小时都在变。
总结
一个很大的模拟器,装的通常是 iOS 的数据,而不是你的应用。在我的 Mac 上,每台设备的应用容器占 0.07 到 0.34 GB,而海报快照、日志、下载的资源和符号缓存最多占了 9.5 GB。先量一量 data 文件夹,留住你需要其状态的设备,其余的用 simctl 擦除或删除。
常见问题
我的应用很小,为什么 iOS 模拟器这么大?
你的应用只占其中一小部分。在我的 QA 模拟器上,9.8 GB 里应用容器只占 0.34 GB。其余都是 iOS 自己的数据:锁定屏幕海报快照的缓存、系统日志、下载的 Siri 和语言资源,以及一个符号缓存。
iOS 模拟器里的 PRBPosterExtensionDataStore 是什么?
它是每个模拟器 data 文件夹里的一个文件夹,属于 PosterBoard,也就是 iOS 中负责锁定屏幕海报的组件。这个名字是 iOS 27.0 运行时私有框架 PosterBoard.framework 里的一个字符串。在我的 Mac 上,它在其中一个模拟器上占了 2.9 GB,几乎全是 .atx 快照文件。
可以手动删除模拟器 data 文件夹里的文件夹吗?
我不这么做。Apple 没有为这些文件夹提供文档,所以谁也说不清删掉会弄坏什么。要清空模拟器的内容和设置,用 xcrun simctl erase;要移除设备,用 xcrun simctl delete。
擦除模拟器会删掉它的 iOS 运行时吗?
不会。擦除会清空设备的 data 文件夹,保留设备和它的运行时。运行时是单独的磁盘映像,要用 xcrun simctl runtime delete 移除。
哪个文件夹属于哪个模拟器?
~/Library/Developer/CoreSimulator/Devices 里的文件夹以 UDID 命名。运行 xcrun simctl list devices,就能把每个 UDID 对应到设备名称、运行时和状态。