关于 macos 内存压缩的疑问, 压缩后的内存是储存在物理内存上吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
touchmii
V2EX    macOS

关于 macos 内存压缩的疑问, 压缩后的内存是储存在物理内存上吗?

  •  
  •   touchmii 2023-08-30 21:03:53 +08:00 1651 次点击
    这是一个创建于 821 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ScreenShot2023-08-30at8.33.20PM

    ScreenShot2023-08-30at8.35.17PM

    找了很多资料, 都没有很清晰的解释这个压缩内存到底是怎么回事, 问智障 GPT 直接说压缩后储存到硬盘上面去了, 直觉告诉我事情没有那么简单, 把内存交换到硬盘应该是 swap 做的事情, 而图中压缩内存应该另有玄机, 根据系统自带的进程管理器可以看到使用内存包括了应用内存锁定内存和压缩内存, 三者刚好比物理内存少 4GB, 这 4GB 被缓存文件占用了(常用文件缓存到内存提高加载速度, 比如一个 pdf 文件被 A 软件打开会缓存到内存, 此时其他软件也打开这个文件加载速度就很快了), 操作系统也就是内核占用的内存在锁定内存中(Wired Mem), 而如果这里面的 16GB 压缩内存不在物理内存而是储存在磁盘上面那物理内存空出来的 16GB 内存被谁给用了呢, 再看另外一款监控软件, 显示内存 Other 占用 16GB, 这刚好就是压缩内存大小, 所有这部分压缩内存就是储存在物理内存上的, 同时压缩内存越多表示内存负荷越高, 因为使用到压缩内存是需要实时解压缩同时还要压缩别的空闲内存给解压缩的内存腾挪出位置, 这一切都是在物理内存上完成的.

    但是图一末尾还要一项 Swap Used: 14.69GB, 我的理解是它并不跟压缩内存重合, 而是把压缩内存中闲置时间过长未使用的内存交换到磁盘了, 同时会腾出物理内存, 而压缩内存则是可能会在近期用到的内存.

    简单来说 macos 内存走向就是, 应用内存 -> 不活动 -> 压缩内存 -> 此时有两种情况: 1.应用唤醒 -> 解压缩内存 -> 应用内存 2.应用长时间未被唤醒 -> 压缩内存交换到磁盘 -> 物理内存腾挪出空间供新的应用内存或解压缩内存使用

    这样才能解释很多人说的 8GB 可以用出 16GB 的效果, 当然我没有用过 16GB 一下的机型, 其中吹嘘成分应该比较大, 如果仅仅靠 swap 技术很难做到无感知, Windows 内存管理没有怎么研究, 但是凭借我的使用体验绝对不是 macos 这种方式, linux 上面有种 zram 的内存内压缩但是好像没有流行开来, 这个技术我觉得跟 iOS 的墓碑机制一样需要 SDK 配合分析应用的行为来决定压缩内存的策略, 不然实际使用问题多多.

    123test1010
        1
    123test1010  
       2023-08-31 10:20:09 +08:00
    物理内存中的二次压缩而已,GPT4 没说压缩到硬盘,https://share.cleanshot.com/J40vqbTV
    touchmii
        2
    touchmii  
    OP
       2023-08-31 13:21:27 +08:00
    @123test1010 gpt3 太拉了, 跟 4 比起来就是胡说八道.
    billlee
        3
    billlee  
       2023-09-01 14:07:11 +08:00 via Android
    就是和 linux 的 zram 是一样的吧,和传统 swap 比起来就是避免了开销最大的磁盘 I/O. zram 在 android 上已经是普遍使用了,你觉得不流行是因为服务器不会有什么不活动的后台应用,用不上 swap 功能吧。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1092 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 23:54 PVG 07:54 LAX 15:54 JFK 18:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86