Mac上App运行变慢或磁盘空间异常减少,主因是其后台生成的缓存文件藏于隐藏路径:沙盒App缓存位于~/Library/Containers/[Bundle ID]/Data/Library/Caches/,非沙盒App则在~/Library/Caches/对应文件夹中;需通过签名验证、终端命令codesign或活动监视器精准定位,切勿误删com.apple.前缀系统缓存。

Mac上某个App运行变慢、反复卡顿或磁盘空间莫名减少,往往不是程序本身出了问题,而是它在后台悄悄生成了大量缓存文件,而这些文件藏在系统隐藏路径里,访达默认不显示。要真正定位一个App的缓存位置,不能只看它安装在哪,必须顺着macOS的沙盒与缓存机制找到它实际写入数据的目录。
确认App是否启用沙盒机制
macOS从10.7起强制App Store应用启用沙盒(Sandbox),这类App的缓存不会放在通用缓存目录,而是被隔离进~/Library/Containers/下的专属容器中。非App Store安装的应用(如官网下载的Chrome、Adobe系列)则通常使用~/Library/Caches/路径。
第一步:在访达中右键点击该App → 选择“显示简介” → 展开“通用”区域,查看“签名”一行;若显示“已验证的开发者”且下方注明“启用了沙盒”,则它属于容器化应用。
第二步:打开终端,输入命令:codesign -d --entitlements :- /Applications/【App名称】.app 2>/dev/null | grep sandbox,回车后若返回<key>com.apple.security.app-sandbox</key><true/>,即确认启用沙盒。
【未启用沙盒的应用,绝不可进入Containers目录盲目清理,否则会导致数据错乱】
查找沙盒类App的缓存路径
沙盒应用的所有运行时数据——包括缓存、偏好设置、数据库、临时文件——都被封装在~/Library/Containers/下的独立文件夹中,命名格式为com.开发商名.产品名。例如微信是com.tencent.xinWeChat,Bear笔记是com.bear-writer.Bear。
方法一:直接定位容器根目录
按下Shift + Command + G → 输入~/Library/Containers/ → 回车 → 在列表中按名称搜索目标App的Bundle ID(可在App简介→“签名”行末尾看到,或用前述codesign命令提取)→ 进入对应文件夹。
方法二:通过活动监视器反向追踪
启动该App → 打开活动监视器 → 切换到“所有进程” → 在搜索栏输入App名称 → 右键该进程 → 选择“在访达中显示” → 点击弹出窗口顶部路径栏中的“Containers”部分(需按住Command键点击路径节点)→ 即跳转至其容器目录。
进入容器后,缓存实际位于:Data/Library/Caches/子路径下。这个路径才是该App真正的缓存落点,而非用户级Caches根目录。
查找非沙盒App的缓存路径
这类App(如VMware Fusion、IntelliJ IDEA、Homebrew安装的工具)会把缓存直写到~/Library/Caches/,文件夹名通常与App Bundle ID一致,但有时也采用简写或自定义命名(如com.google.Chrome、org.mozilla.firefox、JetBrains)。
第一步:按下Shift + Command + G → 输入~/Library/Caches/ → 回车。
第二步:点击窗口右上角“显示”按钮 → 选择“显示选项” → 勾选“计算所有大小” → 点击“大小”列标题排序 → 重点关注体积超过200MB的文件夹。
第三步:将可疑文件夹名与App名称比对;若不确定,可临时退出该App → 删除疑似文件夹 → 重启App → 观察是否自动重建(重建即确认是缓存)。【切勿删除名称含com.apple.开头的文件夹,那是系统组件缓存,删了可能导致功能异常】
验证缓存路径是否真实生效
光看路径不够,得确认该目录确实在被App持续写入。最可靠的方式是用终端实时监控:
① 打开终端,输入:cd ~/Library/Caches/(或对应Containers路径)
② 执行:find . -type f -mmin -5 | head -10 → 此命令列出过去5分钟内被修改过的文件,若返回结果为空,说明当前App并未活跃写入该路径。
③ 启动目标App并执行典型操作(如打开一个大PDF、加载网页、导入素材),再运行一次上述命令;若出现新文件路径,即证明该目录确为当前缓存路径。
④ 若始终无返回,说明该App可能使用/private/var/folders/下的系统临时缓存区(由系统动态分配),此时应改用lsof -p 【进程PID】 | grep cache命令精确定位(PID可在活动监视器中查得)。

















