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

这 IDEA 也太吃内存了, 32G 都不够用了

  •  
  •   buludu · 2023-08-18 09:02:08 +08:00 · 8155 次点击
    这是一个创建于 461 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Snipaste_2023-08-18_08-50-38.png

    61 条回复    2023-10-12 16:30:50 +08:00
    GeekSuPro
        1
    GeekSuPro  
       2023-08-18 09:17:19 +08:00   ❤️ 20
    进来之前:idea 出 bug 了?能占用 32G ?
    进来之后:才 9G ,hei~tui ,标题党
    HelloWorld556
        2
    HelloWorld556  
       2023-08-18 09:17:34 +08:00
    murmur
        3
    murmur  
       2023-08-18 09:19:50 +08:00
    换 win 随便整个台式机 64g 内存够了吧,还有那个 window server 是不是经典的苹果要爆内存的标志
    HoseaDev
        4
    HoseaDev  
       2023-08-18 09:21:22 +08:00
    8355
        5
    8355  
       2023-08-18 09:22:22 +08:00
    都是 idea 的错
    Mogugugugu
        6
    Mogugugugu  
       2023-08-18 09:29:53 +08:00
    Tabby 是那个 Terminal 么?占用这么狠?另外 DBeaver 也挺猛啊、我用 DataGrip 占用也没这么高啊
    monmon
        7
    monmon  
       2023-08-18 09:30:51 +08:00
    注意看这个进程叫 kernel_task ,它似乎占用了过多的内存,如果你感觉到电脑变得很卡,idea 操作不流畅,或许和这个进程有关 [mac 中 kernel_task 占用大量内存如何解决? - benjamin 的回答]( https://www.zhihu.com/question/56689986/answer/662048875)
    youngkingdom
        8
    youngkingdom  
       2023-08-18 09:31:41 +08:00
    都是 idea 的错,你不如去问问为啥微信会占用 700M 的内存
    iFlicker
        9
    iFlicker  
       2023-08-18 09:33:03 +08:00
    你这不行,android 跑一个大点的工程一个 idea 就吃 20 个 g (公司配的 M1 只有 16g ) 卡死了 ,跑一次得执行一次./gradlew --stop
    Goooooos
        10
    Goooooos  
       2023-08-18 09:34:32 +08:00
    换 zgc 后,常用内存从 6G 变到 3G 以下
    wanniwa
        11
    wanniwa  
       2023-08-18 09:50:54 +08:00   ❤️ 1
    mac 的内存使用方式和 win 的好像不太一样,只要没出现卡顿不要有内存焦虑
    wugp
        12
    wugp  
       2023-08-18 09:51:06 +08:00
    还好,内存压力才到一半
    Corybyte
        13
    Corybyte  
       2023-08-18 09:54:16 +08:00
    换 Neovim 吧
    gotosre
        14
    gotosre  
       2023-08-18 10:48:11 +08:00 via iPhone
    @GeekSuPro +1 tui too
    iColdCat
        15
    iColdCat  
       2023-08-18 11:05:34 +08:00
    是的是的 占用太高了 32 根本不够 快换电脑
    20015jjw
        16
    20015jjw  
       2023-08-18 11:14:54 +08:00 via iPhone
    冷知识:用 swap 也不会死
    mtmax
        17
    mtmax  
       2023-08-18 11:23:40 +08:00
    @Goooooos 能分享下配置吗 为啥我升级后反而上升了
    Goooooos
        18
    Goooooos  
       2023-08-18 11:30:20 +08:00   ❤️ 2
    @mtmax
    -Xms3g
    -Xmx6g
    -XX:+UseZGC
    -XX:ConcGCThreads=2
    -XX:ParallelGCThreads=4
    -XX:ZCollectionInterval=120
    -XX:ZAllocationSpikeTolerance=5
    -XX:MetaspaceSize=512M
    -XX:MaxMetaspaceSize=1g
    -XX:ReservedCodeCacheSize=1g
    -Dfile.encoding=UTF-8
    -Djava.net.preferIPv4Stack=true


    ShadowPower
        19
    ShadowPower  
       2023-08-18 11:32:05 +08:00
    看了一眼我正在用的 IDEA ,好像还不如楼主的 WindowServer 吃内存
    ShadowPower
        20
    ShadowPower  
       2023-08-18 11:34:46 +08:00
    @wanniwa 我看到很多人说 mac 的内存使用方式和 win 不一样,但为什么没有人能讲讲到底哪里不一样……
    内存压缩、swap 、空闲内存当缓存用,这些不是都一样吗?
    hello2090
        21
    hello2090  
       2023-08-18 11:51:07 +08:00 via iPhone
    @ShadowPower 我不懂,但是两个系统做同一样事情为啥能一模一样,你和你孪生兄弟也没法长一摸一样啊,都考 5 门课,你们高考成绩还能天差地别呢
    diagnostics
        22
    diagnostics  
       2023-08-18 12:15:08 +08:00
    @murmur 不是吧,WindowsServer 应该是 GPU 的内存?开多了窗口这玩意就高
    ShadowPower
        23
    ShadowPower  
       2023-08-18 12:15:24 +08:00
    @hello2090 你举的例子,属于不可控因素太多导致不一样。
    但内存管理这种玩意挺基础,对于上层应用程序而言它是透明的(即应用程序本身并不关心内存是如何管理的,只需要向系统申请和使用内存即可,不用针对具体的系统实现做适配),也不存在什么需要攻关的科学难题(计算机技术不是自然科学,不像物理、生物、化学那样)。

    因此开发成本没多高,想做成什么样都可以做。内部细节会有差异,但从功能的角度来看,也是殊途同归。
    diagnostics
        24
    diagnostics  
       2023-08-18 12:17:37 +08:00
    @Goooooos #18 M1 最新版 IDEA ,改完直接翻倍
    ThinkStu
        25
    ThinkStu  
       2023-08-18 12:20:16 +08:00   ❤️ 1
    因为 idea 是用 Java 写的) doge
    hello2090
        26
    hello2090  
       2023-08-18 12:26:13 +08:00 via iPhone
    @ShadowPower 既然想做成什么样就能做,为啥两个就能做成一样呢?
    ShadowPower
        27
    ShadowPower  
       2023-08-18 12:42:34 +08:00   ❤️ 1
    @hello2090 那么,不一样的地方是什么?

    基础理论都是一样的,多级页表、换页算法、虚拟地址这些。ARM Mac 和 x86 Windows 能有不同的地方只有前者的页面大小是 16K ,后者是 4K 罢了。这不会对性能产生影响。

    至于网上告诉你“不一样”的果粉,我都看过,无非就是“会充分利用内存当缓存、固态硬盘快(当年苹果更早用上 PCIe 确实快)、有内存压缩”之类的。

    上面提到的东西,在 Windows PC 阵营,这些特性分别出现在:
    Windows XP (预读取技术)
    2014 年左右(主流轻薄本开始普及固态了,也出现了 M.2 接口)
    Windows 10 (内存压缩)

    ---

    另外……
    我用过机械硬盘时代的 MacOSX ,当年的 Mac 只要内存爆了,换页的时候整个系统界面都是定住的。Windows+机械硬盘虽然卡顿,但也没卡到会定住的程度。
    直到后来 Mac 普及了固态硬盘,这个问题才消失了。

    所以,不一样的地方难道是“我觉得不一样”吗?
    那么,以我多年的 Mac OS X / macOS 使用经验(我曾经做过 iOS 开发,不得不用),Mac 显然是优化更差的那个……
    hello2090
        28
    hello2090  
       2023-08-18 12:45:11 +08:00 via iPhone
    @ShadowPower 我不知道是不是理论一样就能做出效果差不多的东西,如果是的话为啥你又感觉 mac 更差呢?
    felixcode
        29
    felixcode  
       2023-08-18 12:49:50 +08:00 via Android
    你太依赖浏览器和 IDE 等各类开发工具了
    chevalier
        30
    chevalier  
       2023-08-18 13:08:41 +08:00   ❤️ 1
    黑苹果 64G 路过,偶尔发愁内存用不完,要不要拔一根下来出掉
    AlexRoot
        31
    AlexRoot  
       2023-08-18 13:11:13 +08:00
    @Goooooos #18 为啥按照你的这个设置,我的内存使用直接翻了一倍。mac Intel
    ShadowPower
        32
    ShadowPower  
       2023-08-18 13:13:27 +08:00   ❤️ 7
    @hello2090 曾经的苹果电脑硬件规格是真的强,当年的苹果产品我都发自内心喜欢,哪怕我对品牌形象没什么感觉,我都对它的硬件规格有感觉。
    我觉得那时候花钱买苹果产品,完全对得起它的售价。无论是手机还是电脑。

    2013 年那会的 Windows 笔记本几乎都是 1366x768 分辨率,42% NTSC 的屏幕,很多都用机械硬盘,内存容量从 2GB 起步,主流为 4GB ,选配规格或者自己加内存才能到 8GB 。当然后期可以上 8GB 单条 x2 得到 16GB 。至于大后期的 16GB 单条内存,都不兼容 2013 年的电脑。

    而 2013 年那时候的最丐的丐版 MacBook Air ,售价 5000 多,1400x900 分辨率,最低内存容量 4GB (跟当年主流 Windows 笔记本一样大)
    还用了固态硬盘,从 128GB 到 512GB 。当年固态硬盘挺贵的。Windows 阵营那堆智商税“超极本”在 7999 的价位,都只给你 16GB/32GB/64GB ,游戏本也是一个小固态搭配一个大机械硬盘。

    所以那时候从 Windows 转向 Mac ,带来的全是正面体验。根本不像今天这样……

    但很多人不知道这些体验都是靠硬件支撑起来的。所以那个时代就已经开始有“mac 优化好”的言论了。同时当年的 iOS 确实比当年的 Android 流畅,很多人把手机类比到电脑,加深了这种印象。

    我确实用过这些东西:
    * 搭载机械硬盘的 Mac 一体机( iMac 2013 )
    * 搭载固态硬盘的 Mac 笔记本
    * 搭载机械硬盘的 Windows 台式机和笔记本
    * 在那个时代,搭载固态硬盘的 Windows 笔记本

    当时我做 iOS 开发,开机得一分半,点 Xcode 图标都要蹦两分钟左右,这个时间够我泡一杯咖啡喝完了。
    Windows 用机械硬盘开机 30 到 40 秒,用了“快速启动”只有 9 秒,开 Visual Studio 最多 20 秒,体积比曾经的 Xcode 大,功能还强……

    系统都是全新安装的,没有任何开机自启动的其他软件。结论只能是 Windows 的优化好过 Mac 了。

    几年前我还看到有人说 Windows 内存满了就会卡。其实,用速度足够快的固态硬盘时,同等条件下 Windows 都比 macOS 流畅……
    场景是:开了极多的 Chrome 浏览器标签页。切换标签页,内存满了会有延迟。
    很多人所谓的“流畅”不过是滚动页面的动画不掉帧……但这跟内存没什么关系,跟显卡有关系。
    Nasei
        33
    Nasei  
       2023-08-18 13:22:10 +08:00   ❤️ 1
    @ShadowPower 这里的有些人不可能承认 MacOS 有缺点,只能用"不一样"找补一下
    hello2090
        34
    hello2090  
       2023-08-18 13:40:18 +08:00
    @ShadowPower 说了这么多,你就直说吧,内存管理这么基础,理论一致的东西,微软的和苹果的到底有没有哪个更好
    ShadowPower
        35
    ShadowPower  
       2023-08-18 14:00:16 +08:00
    @hello2090 仅论内存管理,两者没有显著区别。
    硬件规格有区别是另一回事了。内存不足导致体验变差的程度,你在今天的 macOS 和今天的 Windows 上,感受应该差不多。

    只是如今内存巨便宜,给苹果电脑加 8GB 内存的价格,可以把 DDR4 内存加到 128GB ,或者 DDR5 加到 64GB……

    这时候……
    有些人把硬盘当内存用
    而有些人把内存当硬盘用
    tanrenye
        36
    tanrenye  
       2023-08-18 14:58:07 +08:00
    @Goooooos 你这个参数,mac 用了启动之后就占用 12G ,默认参数才用了 3G 。。。
    xdeng
        37
    xdeng  
       2023-08-18 15:01:09 +08:00
    java 的锅
    chesha1
        38
    chesha1  
       2023-08-18 15:14:14 +08:00
    我看了下我的微信和 onedrive ,在我这里才占用 200M 和 100M 内存,也是 macos
    有点奇怪啊
    murmur
        39
    murmur  
       2023-08-18 15:22:06 +08:00
    @hello2090 反正我就看苹果粉丝今天抱怨邮件内存炸了,明天 window server 内存炸了,后天微信内存炸了,你说哪个更好

    一样的程序,一样的大厂,windows 没事到了 osx 三天两头爆内存那我只能归咎于 osx 底层咯
    Leviathann
        40
    Leviathann  
       2023-08-18 15:28:25 +08:00
    intellij idea 作为一个 jvm app ,不是你给多少就用多少?
    可以说是很多人背的 jvm 参数调优八股文唯一的用武之地
    Goooooos
        41
    Goooooos  
       2023-08-18 15:37:57 +08:00
    zoharSoul
        42
    zoharSoul  
       2023-08-18 15:48:14 +08:00
    @Goooooos #10 怎么弄的?
    listkun
        43
    listkun  
       2023-08-18 15:51:03 +08:00
    a33291
        44
    a33291  
       2023-08-18 15:54:27 +08:00
    @Goooooos #18 我用这个配置后,webstorm 内存占用从 2G 降低到 1.2G(启动后打开项目为止,其他啥都不干)
    123test1010
        45
    123test1010  
       2023-08-18 15:58:24 +08:00
    1.Mac 的内存和 windows 的内存完全不是一个东西,别拿 windows 的那一套去看。
    2.看你“内存压力”指标并没有看出什么不够用。
    3.IDEA 这个吃内存不看这里,要看软件自动的的“内存指示器”。
    看图吧: https://share.cleanshot.com/CxTXt0wd
    EXChen
        46
    EXChen  
       2023-08-18 15:58:43 +08:00
    @Goooooos 做进在做服务的改造,代码量很大,IDEA 经常卡死,看到你的留言也去把 GC 配置成 ZGC ,发现卡顿的情况好多了。
    Goooooos
        47
    Goooooos  
       2023-08-18 16:01:01 +08:00
    Java 除了 zgc 外,当对内存达到 XMX 后,会一直占用,即使 GC 后内存不需要那么多了。
    zgc 的好处是会把多余的归还给操作系统。
    至于你项目非常庞大,该用的内存还是会用的。所以并不是所有人的适用
    Goooooos
        48
    Goooooos  
       2023-08-18 16:01:44 +08:00
    另外,jdk17 才建议使用
    Goooooos
        49
    Goooooos  
       2023-08-18 17:55:16 +08:00
    @123test1010
    内存指示器只是堆内存的情况,实际上 JVM 的堆内存会增长到 XMX 后,即使经过 Full GC 回收,所占用的内存也不会归还给操作系统,对于操作系统,这部分内存是被 IDEA 吃了
    另外 JVM 还有堆外内存,Metaspace 这些
    agagega
        50
    agagega  
       2023-08-18 19:14:43 +08:00   ❤️ 2
    JB 系 IDE 不是都可以设置堆大小吗?如果项目太大不够用它会自己弹警告,我 32G MBP 设置的 10G ,其他浏览器日常占用几个 G ,内存压力一直都是绿的,没什么问题,你这个感觉是其他东西占用多了。同样的项目同样的 JB IDE 我在 Windows Linux macOS 都开过,没觉得哪个平台明显更省内存或者用得更多。

    @ShadowPower
    macOS 的活动监视器根本就不显示空闲内存这个参数,反而会把已缓存文件标出来,所以很多人看到的情况应该不是系统内存被缓存占用了一部分,而是确确实实的内存不足。但可以合理猜想以前 Windows 在缓存文件这块确实没有 OS X 激进。我认为有可能在内存相对充裕的时候,macOS 会更激进地运行一些系统服务,而如果这个调度策略有 bug ,就会显得在系统缺内存的时候这些服务还在占用不小的内存空间。我在对比 Linux 桌面和 Windows 的时候也有这个感觉,Linux 系统监视器里占用的内存更少,这显然不是因为 Linux 有什么 Windows 没有的黑科技,而是运行的服务更少。

    至于优化好不好这个问题。现代 macOS 的前身是 NeXTSTEP ,而 Windows 虽然内核换成了 NT 但很多底层 API 和实现还是从当年的 PC 年代一路走过来的,有这个差异很正常。问题是当双方都普及更先进的硬件之后,也很难反过来说 macOS 就比 Windows 明显更差,现在所谓感觉上性能的差距,更多来自于软件的稳定性和 UX 设计。比如一些人觉得 macOS 的鼠标有延迟感,后来才发现是因为默认开鼠标加速度,还有切换应用和桌面的那种感觉上的卡其实是因为动画。当然现在 macOS 没有积极维护了,有问题也正常,但我觉得只需要把这些细节逻辑调整一下,不需要做什么性能优化,感官上就会快一大截。

    macOS 上主流软件要么用 Cocoa 写的、要么基于 Web 技术、要么像 IDEA 这样用 Java 写的。我不知道有没有人做过 Benchmark ,但我很怀疑 Chromium 或者 Java 在不同系统上的内存效率真的会有质的差距。而 Cocoa 这种基础框架,按理说没有 GC 内存效率会更高,而且如果它有内存泄漏问题,那整个系统可能就不是多占用这一点内存的问题了。所以怀疑更多是系统上层服务的调度逻辑过于激进。

    Mac 被人诟病体验差,系统 bug 只是一方面,主要还是因为贵。如果 64G 的 Mac 卖今天 16G 的价格,论坛里抱怨的帖子起码能少一半。
    wellerman
        51
    wellerman  
       2023-08-19 00:11:44 +08:00
    @GeekSuPro 哈哈,我 Emacs 338MB , java-lsp 1.5G
    morgan1freeman
        52
    morgan1freeman  
       2023-08-21 08:28:53 +08:00
    @chevalier 相同的感受,黑苹果 64G 内存,真的是肆无忌惮,3000 块 i9 10900ES + b460 迫击炮 + 64G 内存 吊打一众 白苹果,再爽黑苹果最后几年,等 M 系列二手降价,顺手买一台,然后换块电池,又能打,还便宜
    Richared
        53
    Richared  
       2023-08-21 15:20:52 +08:00
    qsnow6
        54
    qsnow6  
       2023-08-22 21:38:27 +08:00
    16G 内存是真的经常爆掉,开个 pycharm 、Datagrip 如果长时间不关就会爆!
    在想要不要在家搞台大内存的服务器,远程开发。😞
    buludu
        55
    buludu  
    OP
       2023-08-23 08:36:10 +08:00
    @murmur 要背个电脑到处跑,从 32G 的 Win 笔记本换过来的
    buludu
        56
    buludu  
    OP
       2023-08-23 08:37:08 +08:00
    @Mogugugugu 我也没想到一个命令行工具占这么多内存,有个命令智能不全功能。Java 写的工具都高。
    buludu
        57
    buludu  
    OP
       2023-08-23 08:39:07 +08:00
    @felixcode 那用啥
    buludu
        58
    buludu  
    OP
       2023-08-23 08:40:04 +08:00
    @chesha1 我也奇怪,为什么占这么高,微信可能是开了几个腾讯文档之类的窗口
    buludu
        59
    buludu  
    OP
       2023-08-23 08:49:05 +08:00
    @123test1010 这么一搞更看不懂了,内存 11G ,实际只占 2.5G ,共享 500M 。。
    123test1010
        60
    123test1010  
       2023-08-23 10:25:58 +08:00
    @buludu 这个需要更专业的分享了,建议通过 GPT 搜索相关内存概念以及机制,评论区篇幅有限,大家也只能按照自己的理解去说。说点实际的,mac 只看内存压力就行了,其他方面系统会自动调整内存。像 cleanmymac 这种软件具有内存监测及管理功能(相当于可读可写(编辑结束内存)),反而对 mac 自身内存优化是一种破坏,容易导致各种程序无响应(或者提示内存不足)。他们这种软件就是哄用户玩的,包括柠檬,内存显示还是按照 Windows 的维度设计,毫无意义
    HighLight
        61
    HighLight  
       2023-10-12 16:30:50 +08:00
    我也偶发性的出现爆内存的情况,内存黄色的时候;整个电脑都卡的不行了。。。服了,32G 的 M1pro, 跑项目都会出现卡死的情况
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   978 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:21 · PVG 05:21 · LAX 13:21 · JFK 16:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.