前言
最近发现很多 mac 用户反映自己的 mac 系统显示内存占用高达 200 多 Gb,可是实际上自己下载的应用程序根本没那么多,使用专业的内存扫描工具扫的结果跟系统本身显示的完全不一样。那么出现这个问题到底是什么原因呢,下面就给大家详细介绍下这种情况的发生原因及解决方法。
- 这是 Mac 自带的 system information.app (About this mac)。
1、机制
当我们在点击存储这个按钮时,Mac 后台会通过 spotlight 的功能进行对 audio,movie,apPS 这些 属性的文件进行统计。
spotlight 的背后是通过 Mac 的一套 metadata 的机制进行索引的,metadata 可以理解成对整个文件系统做了一个快速的分类和元数据 index,就像字典目录一样,可以感受一下,这些元数据存储在根目录。
Mac 对整个 metadata 进行了规范,可以通过命令 mdls 查看,属性 kMDItemContentTypeTree,递增的属性。
所以对于统计 Apps 的大小,就是把所有符合 ”com.apple.package” 进行汇总。
2、解决方法
在一些情况下面,metadata 索引可能会出现错误,这时候,我们看到统计出来的结果会有问题或者偏差太大,这时候,可以通过下面的步骤
确保 spotlight 没被关闭
显示 enabled 进入第二步,不然需要把 spotlight 打开
$ alexs-iMac:Documents alex$ sudo mdutil -i on /
对 Mac 的整个磁盘,metadata 重新建立索引
$ sudo mdutil -E /
这步操作比较耗磁盘的 IO,明显的感觉就是系统用起来没有那么顺畅了,如果磁盘大,文件多,可能需要很长时间。最好在下班,或者吃饭间隙操作。
3、重建 Spotlight 索引
Mac系统中的 Spotlight 索引(屏幕右上角)功能相信大家一定经常使用,虽然 Spotlight 在磁盘内容更新方面索引也很及时,但是还是会出现某些情况,需要我们重新建立一次 Spotlight 索引,例如新恢复的磁盘,或者出于某些情况要重建索引,这个时候就需要我们手动重建 Spotlight 索引了。
下面是使用终端命令重建 Spotlight 索引的方式
$ sudo mdutil -E /
上面的命令可以将Mac下的所有磁盘全部重建索引,包括 Mac 本身的硬盘,磁盘镜像,还有外接硬盘等。
$ sudo mdutil -E /Volumes/Macintosh\\ HD/
上面的命令可以只选择重建Mac主磁盘 Macintosh HD 的索引
$ sudo mdutil -E /Volumes/External/
上面的命令可以重建某个外接磁盘的索引内容,当然要考虑替换外接磁盘的名字,这里的名字是 “External”
其实还可以选择重建某个文件的索引,或者某个文件夹目录也可以,首先我们需要直到这个文件或者文件夹目录的路径,之后替换到下面的命令中就可以了:
$ mdimport /path/to/file
当然,如果你不喜欢用终端,还有一个使用 Spotlight 控制面板完成的小技巧:
在系统偏好设置中打开 Spotlight,之后点“隐私”标签找到防止搜索,将想要重新检索的磁盘或者目录拖拽进来
拖拽进来后选中,点击下面的“减号”符号,把这个防止的内容再去掉,就可以重建索引了