关闭后效果预览

首先我们来看看

Mac OS X / IOS 内存管理机制

OS X的内存管理与Unix是很类似的,内存管理的思想都是尽可能的使用内存,内存是计算机最宝贵的资源,读写速度快过硬盘

例如你可能会觉得我的64G内存系统应用就用掉10G以上,这不是大大的浪费吗?

image-20211231073913294

实际上,这个是很正常的,为什么呢?

在OS X中内存分为这几种状态:

  • active
  • inactive
  • free
  • wired

wired
代表联动内存,这是系统核心占用的,无法移动到硬盘,必须保留在RAM里,联动内存大小取决于当前应用程序。

active
代表当前正被使用或刚被使用过的内存

inactive
表示这些内存中的数据是非活跃的,现在没有在使用,但是最近刚被使用过。比如刚刚关闭了一个Mail应用,它的内存并不会立刻被释放掉,而是变为Inactive,这样当我们再次打开它时,就可以快速打开,而不需要从比较慢的硬盘再打开。而在没有再次打开Mail前,启动其他应用是可以用这块inactive的内存的,它就像可用内存一样,可供其他应用程序使用,但是可以在其他应用程序占用它前,使得打开Mail更快。

free
没有使用的内存

例如我的64Gimage-20211231074244321

事实上,使用OS X/linux等类Unix操作系统时,是不需要担心内存占用太多的,因为内存就是要充分使用的。
当你有少量free内存,大量inactive内存时,表明此时系统运行在最佳状态,反而在刚开机时大量free时会比较慢。
只有当free和inactive都很少时才说明内存不够用了。但事实上,得益于SSD和M1 MAX的强大,即使CPU压缩内存到硬盘,再从硬盘取回数据,这之间的时间间隔也非常小,用户几乎很难察觉出来,所以MAC用户无需担心内存使用问题.

我尝试过将CPU和内存拉满,但即使这样,系统UI也没出现明显卡顿.

得益于OS X 系统采用了 Unified Buffer Cache,MAC的空闲内存会被用来加速文件访问.即上图中的压缩内存.

在日常使用中,可以做到随时开随用,流畅无卡顿.

了解更多,请参考🔗

为什么要关闭?

img

我们都知道,SSD写入有容量限制,一旦写入达到了设计的最大写入容量,这SSD也就报废了,

例如 512G 的 SSD 寿命一般 300T,写入量(一礼拜2T)就算刻意每天都很注意的用 2-3年你固态也写满报废了

然而还不能自己换,高度集成化,固态坏了就要全套板子一起换

256g固态的理论寿命是150TBW,一个月10T写入的话

理论来讲你只能用一年零三个月,实际情况永远是主控先挂 全盘GG

1.启动虚拟内存(默认):无论怎么样都会使用虚拟内存,除非你的内存特别大,目的是为了防止在突然打开一个超大的文件时,导致需要重新处理内存与虚拟内存。所以默认使用虚拟内存,尽量让出大部分物理内存。

2.关闭虚拟内存(需要手动):默认不使用虚拟内存,但经过我观察,似乎是超过预警阈值(内存GB-2GB的样子)就会开始使用虚拟内存,我猜测目的是为了系统的稳定性

SSD损耗科普链接🔗

Mac M1如何关闭虚拟内存?

  1. 关闭系统完整性保护机制

  2. 关闭虚拟内存

首先关闭系统完整性保护需要进入recovery OS,Mac M1进入模式好像不太一样。就在电脑完全关机的情况下,一直按着电源键不放,提示你继续按着电源键就可以进入,然后直到提示你正在进入恢复模式就可以放手了。

选择用户输入密码后,左上角有一排的菜单,找到终端打开它,输入:

csrutil disable

输入yes,然后密码就可以了。

重启电脑后打开终端,输入:

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

然后就关闭了,使用这个指令可以查看虚拟内存使用情况:

sysctl vm.swapusage

到了这里你就关闭了虚拟内存,但注意,你之前关闭了系统完整性保护,我建议你重新开启,以免不必要的问题,重新进入recovery OS恢复模式,在终端输入:

csrutil enable

就打开了。

关闭虚拟内存不排除是否有风险,如果你每天都是负载使用MAC,关不关都无所谓的。如果你只是简单使用MAC,内存一大半没用就被使用了虚拟内存,你就可以关闭掉虚拟内存。

如何查询Mac硬盘写入量

查看硬盘写入量是通过一个叫 smartctl 的应用实现的

安装 HomeBrew

通过 Mac os 上的软件包管理工具 HomeBrew 来进行安装 (若已安装则跳过即可)

官网给出的方法十分简单,只需要在终端中粘贴如下代码即可:

/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

若出现

raw.githubusercontent.com port 443: Connection refused

则说明终端没有过代理(需科学上网)

简单的方法就是换源,终端输入以下代码即可:

1
2
3
4
# 设置homebrew-core镜像
HOMEBREW_CORE_GIT_REMOTE=https://mirrors.ustc.edu.cn/homebrew-core.git

/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"

等待安装完成后,需要设置环境变量,在终端中接着输入以下代码即可:

注意:如果你确定使用的终端是zsh(一般默认是zsh),那么直接执行下面代码,否则请将两段的末尾的 zshrc 改为bashrc即可

1
2
echo export PATH=/opt/homebrew/bin:$PATH >> .zshrc
source ~/.zshrc

重启终端,并在其中输入 brew ,如果没有报错,则说明安装成功了。

关于安装 HomeBrew 的其他方法,可以参考这篇文章:

Mac必备神器Homebrew - 知乎专栏

安装 smartctl

成功安装 HomeBrew 之后,我们就可以安装 smartctl 了!在终端中输入如下代码,即可进行安装:

1
brew install smartmontools

在终端输入 smartctl ,如果没有报错则说明安装成功了。

查看硬盘使用量

在终端中输入如下代码,即可进行看查硬盘使用量。

1
smartctl -a disk0

结果如下,里面的Percentage Used 就是损耗值,Data Units Written 就是写入量。

如何卸载

只需在终端输入下面的代码即可卸载成功:

1
brew uninstall smartmontools 

其他人硬盘读写入量参考链接