前言

  • 最近发现很多 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,之后点“隐私”标签找到防止搜索,将想要重新检索的磁盘或者目录拖拽进来

  • 拖拽进来后选中,点击下面的“减号”符号,把这个防止的内容再去掉,就可以重建索引了

最新文章

  1. yuv420转rgb 及 rgb转bmp保存
  2. Codeforces 715A. Plus and Square Root[数学构造]
  3. java基础(1)-比较jdk5,jdk6,jdk7的新特性
  4. test if DEMO
  5. Filling a Path 模式
  6. Lua数据结构的学习笔记
  7. 安装 ArcGIS Runtime SDK for Android
  8. [MarsZ]Unity3d游戏开发之Unity3d全策划配置新手指引
  9. 斜率DP hdu 3507
  10. dojo实现省份地市级联报错(二)
  11. mysql实现开窗函数
  12. 五.ssh远程管理服务
  13. 高并发编程基础Synchronized与Volatile
  14. C++类中一个构造函数调用另一个构造函数
  15. ubuntu 电源管理
  16. 移除元素(remove,remove_if...unique...)
  17. c++11中关于std::thread的join的思考
  18. Objective-C中的hasPrefix
  19. mac下zephir第一步,安装+hello zephir!
  20. 20145311 《Java程序设计》第十周学习总结

热门文章

  1. 阿里云centos安装ftp与svn过程
  2. IntelliJ - idea15.0.2 破解方法
  3. 1418 This function has none of DETERMINISTIC,NO SQL,or R
  4. 利用RTMFP开发P2P应用
  5. 命令行能运行,但是在crontab不能正常运行的问题
  6. WIP 001 - design the applicant screen
  7. 使用pywin32处理excel文件
  8. 理解Android编译命令(转)
  9. C# lambda方式取出前十个经常联系的手机号码
  10. oracle的参数文件:pfile和spfile