macos 不允许用户手动设置虚拟内存大小,由 dynamic_pager 服务自动管理 swapfile;可通过终端命令间接影响交换行为,如禁用交换、调整压缩强度或清理残留文件,但需谨慎操作。

查看当前交换使用情况
先确认是否真有必要干预:
- 活动监视器 → 内存标签页:滚动到底部,关注“已使用的交换文件”和“交换文件大小”。若长期低于 200MB 且内存压力为绿色,无需操作。
-
终端命令:
-
sysctl vm.swapusage—— 显示当前 swap 总量、已用和空闲(如total = 2.00G used = 845.50M) -
vm_stat—— 查看页面换入换出、压缩页等底层调度状态 -
ls -lh /private/var/vm/swapfile*—— 列出实际存在的交换文件及其体积
-
禁用或恢复自动交换功能
停用后系统不再生成任何 swapfile,物理内存必须完全承载所有负载——仅建议内存 ≥32GB 且环境可控时临时使用:
-
禁用:
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist -
立即清空现存文件:
sudo rm /private/var/vm/swapfile* - 重启生效
-
恢复默认:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist,再重启
调整内存压缩强度(推荐优先尝试)
macOS 默认启用内存压缩(Compressed Memory),能显著减少对磁盘交换的依赖。提高压缩优先级可延缓 swap 触发时机:
- 终端执行:
sudo defaults write /Library/Preferences/com.apple.virtualMemory vm_compressor_mode -int 4(4 为最高压缩强度) - 同时确保启用压缩:
sudo defaults write /Library/Preferences/com.apple.virtualMemory useCompressedMemory -bool YES - 需重启生效;验证方式:
sysctl vm.compressor_mode应返回4
清理旧交换文件释放磁盘空间
异常关机可能导致 swapfile 残留占用空间,手动清理前需先停用 dynamic_pager:
- 先执行禁用命令(见上文)并重启
- 运行:
sudo rm -f /private/var/vm/swapfile* - 再启用服务并重启,系统会重建干净的交换结构
- 该操作只释放磁盘空间,不改变 swap 容量上限











