V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nobidagu
V2EX  ›  MacBook Pro

Mojave 醉人心弦的内存管理.

  •  
  •   nobidagu · 2019-07-12 16:04:05 +08:00 · 5165 次点击
    这是一个创建于 1950 天前的主题,其中的信息可能已经有所发展或是发生改变。

    可用内存还有很多,但是就是开始使用 swap 虚拟内存了. ZWxAu6.md.png
    然后一点一点一点加 ZWxFjx.md.png



    最后
    ZWxN5Q.png


    BOOM!


    我.............

    18 条回复    2019-09-28 20:35:40 +08:00
    luckyrayyy
        1
    luckyrayyy  
       2019-07-12 16:51:44 +08:00
    27G 是什么操作....的确经常看到内存还有不少剩余就开始用 swp 的操作,我也很费解这样有什么好处..

    但是 27G 是真的没见过
    tyhunter
        2
    tyhunter  
       2019-07-12 17:02:39 +08:00
    你这是有程序内存溢出了吧,打开活动监视器看看
    wgh666
        3
    wgh666  
       2019-07-12 17:14:02 +08:00
    我被网易 mumu 搞过一次,报警才知道,90 多 G 的硬盘空间差点就写完了
    yulgang
        4
    yulgang  
       2019-07-12 17:28:48 +08:00
    Remote Desktop Manager 出现过一次
    longbow23a
        5
    longbow23a  
       2019-07-12 18:22:46 +08:00
    @wgh666 同被 mumu 搞过,心疼 SSD
    nobidagu
        6
    nobidagu  
    OP
       2019-07-12 18:34:05 +08:00
    @tyhunter 应该是,我这边看到是 jetbrains rider 给吃的,软件关掉了也没释放掉,只能重启.
    MrUser
        7
    MrUser  
       2019-07-12 18:41:17 +08:00
    这是 top 吗?
    nobidagu
        8
    nobidagu  
    OP
       2019-07-12 18:56:00 +08:00
    @luckyrayyy 就因为这个我还特意关掉了 swap,但是更加麻烦的是,管理 swap 后,经常在内存只用了 6-7G 的情况下弹出内存不足,要关闭应用程序窗口,如果不管,过一阵子,有些软件就会自动崩掉,所以我不得已又打开了 swap,然后出现了上面那一幕.
    nobidagu
        9
    nobidagu  
    OP
       2019-07-12 18:56:28 +08:00
    @MrUser htop
    di11wei
        10
    di11wei  
       2019-07-12 18:58:41 +08:00
    我觉得是有程序的问题吧。有时候内存足够也会用交换文件。但是什么原理真的不知道
    nobidagu
        11
    nobidagu  
    OP
       2019-07-12 18:59:47 +08:00
    我记得 10.13 以下的版本不会有这样的问题,那时候内存经常用到 13 个 G 以上,也没有 swap,现在这系统不知道 Apple 工程师又做了什么鬼操作在里头.
    lscho
        12
    lscho  
       2019-07-12 19:13:18 +08:00 via Android
    @wgh666 同被 mumu 坑过,磁盘写满了
    also24
        13
    also24  
       2019-07-12 19:19:43 +08:00
    经常遇到类似情况



    nobidagu
        14
    nobidagu  
    OP
       2019-07-12 21:09:54 +08:00
    @di11wei 程序内存肯定是泄露了,只是 mac 这内存管理策略我也是瞧不懂了.
    shn7798
        15
    shn7798  
       2019-07-13 00:08:49 +08:00   ❤️ 2
    可以切换内存管理模式。
    经本人测试当 vm_compressor=2 的时候,系统不到万不得已是不会产生 swap 的
    设置命令(需要关闭 csrutil,或者 Recovery 模式操作):
    sudo nvram boot-args="vm_compressor=2"


    这个是 vm_pageout.h 中模式的定义:


    ```#define VM_PAGER_DEFAULT 0x1 /* Use default pager. */
    #define VM_PAGER_COMPRESSOR_NO_SWAP 0x2 /* In-core compressor only. */
    #define VM_PAGER_COMPRESSOR_WITH_SWAP 0x4 /* In-core compressor + swap backend. */
    #define VM_PAGER_FREEZER_DEFAULT 0x8 /* Freezer backed by default pager.*/
    #define VM_PAGER_FREEZER_COMPRESSOR_NO_SWAP 0x10 /* Freezer backed by in-core compressor only i.e. frozen data remain in-core compressed.*/
    #define VM_PAGER_FREEZER_COMPRESSOR_WITH_SWAP 0x20 /* Freezer backed by in-core compressor with swap support too.*/
    ```


    参考链接: https://apple.stackexchange.com/questions/118839/vm-compressor-mode-vm-compressor-mode-values-for-enabled-compressed-memory-in/138671
    nobidagu
        16
    nobidagu  
    OP
       2019-07-18 11:23:06 +08:00
    @shn7798 是有一些效果的,swap 基本在 1G 不会动,但是内存使用率还是上不了 9G(我 16G 内存),而且一段时间使用后,机器会变得巨卡,不得已,还是换回去了.
    shn7798
        17
    shn7798  
       2019-07-18 22:19:59 +08:00
    @nobidagu #16 可能我是 32G 的关系。。。不过你那个情况估计内存已经吃紧了吧
    ispinfx
        18
    ispinfx  
       2019-09-28 20:35:40 +08:00
    32G 表示经常上不到 20G !
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2947 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 00:03 · PVG 08:03 · LAX 16:03 · JFK 19:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.