在 Activity 监视器中释放更多非活动或文件缓存内存

Free up more Inactive or File Cache memory in Activity Monitor

我发现一个应用程序具有清理内存功能。

我认为它使用了原始的 PURGE 功能,但在检查后(使用 Activity Monitor),我发现它可能比 Purge 命令更空闲的文件缓存(或者它可以独立于 PURGE 操作命令)。请参考下面我的实验。

  1. 下面是Activity监控
  2. 中的第一个信息

  1. 然后,我使用清理内存功能(释放 600+ MB 文件缓存)

  1. 最后,我使用 PURGE 命令(释放更多 400+ MB 文件缓存)

我的问题: 参考 free mem as function of command 'purge'
1. Clean Memory功能是用什么技术做的(研究了https://opensource.apple.com/一个星期没找到相关资料)?
2.(选填)Clean Memory函数和PURGE命令的区别?

Memory Clean 应用程序所做的似乎只是分配和释放内存。如果您有 Xcode,您可以 运行 仪器并跟踪内存清理的分配。一旦您点击 "Clean Memory" 按钮,您将在 Instruments 中看到分配的 "Total Bytes" 与 Memory Clean 中显示的 "free memory available" 几乎相同。您也可以在 Activity 监视器中看到相同的内容。

关于purge命令,似乎使用了不同的机制。用 dtruss (dtruss purge) 跟踪它在最后一行显示以下结果:

vfs_purge(0x7FFF5320CDE8, 0x7FFF5320CDF8, 0x7FFF5320CE48)        = 0 0

根据 vfs_syscalls 的来源,更具体地说是评论:

/* * Purge buffer cache for simulating cold starts */

不用说,清除文件缓存是个坏主意,它只有一个好的应用程序——基准磁盘。

我找到了解决方案。

创建数据然后释放它很简单。