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

这 idea 内存占用好迷

  •  
  •   devinww · 2022-04-26 11:11:48 +08:00 · 4198 次点击
    这是一个创建于 702 天前的主题,其中的信息可能已经有所发展或是发生改变。

    20 款 m1 pro 16+512 idea 升级到最新版本,内存设置了 4096 ,就开了一个项目,内存占用 7.26G ,app 内存 5.89 ,联动内存 1.37 ,被压缩 4.60

    29 条回复    2022-04-27 09:46:09 +08:00
    alexcding
        1
    alexcding  
       2022-04-26 11:48:47 +08:00 via iPad   ❤️ 1
    Java 祖传
    whx
        2
    whx  
       2022-04-26 12:44:28 +08:00 via iPhone   ❤️ 2
    Java 写的软件也就这样了,再多内存都吃得下。

    还有原因就是老版本的 jdk GC 不喜欢释放占用的物理内存,jdk11 以上 Shenandoah GC 可解。

    -XX:+UseShenandoahGC
    -XX:ShenandoahGCHeuristics=compact

    https://wiki.openjdk.java.net/display/shenandoah/Main

    Eclipse 上自用快半年以上了,效果不错。
    devinww
        3
    devinww  
    OP
       2022-04-26 13:04:11 +08:00
    @whx 没办法,还在用祖传 1.8
    Rache1
        4
    Rache1  
       2022-04-26 13:34:05 +08:00
    最新版的内存好像出了问题,我这里可以跑到 14G 😂
    whx
        5
    whx  
       2022-04-26 13:37:40 +08:00 via iPhone
    @devinww 最新版的 idea 自带的 jre 是 11 ,是支持 Shenandoah GC 的,这个是修改 idea 的运行环境,和项目的开发环境没关系。

    只修改 idea 的 vmoptions 文件就行了。

    我在 win10 下测试最新版的 idea 社区版是可以的。
    devinww
        6
    devinww  
    OP
       2022-04-26 13:44:15 +08:00
    @whx 你说的是 runtime 啊,这个我已经升到最新的 17 了
    Runtime version: 17.0.1+12-b164.8 aarch64
    wqhui
        7
    wqhui  
       2022-04-26 13:46:12 +08:00
    我开 4 个项目 5.8G ,试试把 idea 没用的插件卸了
    whx
        8
    whx  
       2022-04-26 13:47:07 +08:00 via iPhone
    @devinww 17 的 Shenandoah GC 效果更好。
    qwerty01446
        9
    qwerty01446  
       2022-04-26 13:50:38 +08:00
    @whx 最新版 IDEA ,runtime 是 17 ,效果很好。又是涨知识的一天,多谢哈哈哈。
    2696284032
        10
    2696284032  
       2022-04-26 13:55:13 +08:00
    我跑微服务,开个 10 个项目,idea 用 4 个 G 内存,直接最低堆内存:-Xms128m -Xmx128m
    qwerty01446
        11
    qwerty01446  
       2022-04-26 14:00:09 +08:00
    @whx 不过 compact 也回收的挺激进的? IDEA 的 CPU 使用占用很高,不知道是 BUG 还是什么原因
    qwerty01446
        12
    qwerty01446  
       2022-04-26 14:03:45 +08:00
    @whx 抱歉回复的这么多。有点像 JBR17 的问题,我切换到 11 ,同样的设置 CPU 占用就正常了。
    whx
        13
    whx  
       2022-04-26 14:09:48 +08:00 via iPhone   ❤️ 1
    @qwerty01446 没关系,17 的 Shenandoah GC 相比 11 有大升级,停顿时间更短,可能是这个原因导致。
    devinww
        14
    devinww  
    OP
       2022-04-26 14:17:54 +08:00
    @2696284032 我把内存设置低了,他会在根目录下产生一个文件
    devinww
        15
    devinww  
    OP
       2022-04-26 14:18:36 +08:00
    @qwerty01446 你在 vm 里加了-XX:+UseShenandoahGC
    -XX:ShenandoahGCHeuristics=compact
    嘛,
    我加了之后 idea 直接起不来了。。去了才行
    2696284032
        16
    2696284032  
       2022-04-26 14:21:50 +08:00
    @devinww 我是 window ,mac 不了解了,不过我 idea 分配的一个 G ,然后项目分配 128M 或者 256 启动的
    DinnyXu
        17
    DinnyXu  
       2022-04-26 14:33:22 +08:00
    我跟你一样型号,我 idea 设置的是 3096 ,我一个项目里面有十几个微服务模块,平时的话会开 4 个服务,查看活动监视器内存占用是 3-5 个 G ,大多数时间是 3 点几。你需要注意的是自己的 app 是不是 arm 支持的,还有 jdk 是否是 arm 的,这样能减少内存的占用
    chendy
        18
    chendy  
       2022-04-26 14:46:55 +08:00
    不用的插件关一波应该能减少一些内存占用
    手里 20 年的大屎山,才吃了 5g 内存( xmx 4g
    qwerty01446
        19
    qwerty01446  
       2022-04-26 14:54:17 +08:00
    @devinww 我也是 M1 的 mac ,最新版 IDEA+JBR17 ,加了这两行是可以启动的,不过 CPU 使用率很高,一直在 600-800 ,我换成 JBR11 之后,就好了。
    qwerty01446
        20
    qwerty01446  
       2022-04-26 14:55:23 +08:00   ❤️ 2
    @devinww 这是我的 VM options

    --illegal-access=warn
    -Dsun.java2d.metal=true
    --add-opens=java.base/java.lang=ALL-UNNAMED
    --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
    --add-opens=java.base/java.text=ALL-UNNAMED
    --add-opens=java.base/java.time=ALL-UNNAMED
    --add-opens=java.base/java.util=ALL-UNNAMED
    --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
    --add-opens=java.base/java.io=ALL-UNNAMED
    --add-opens=java.base/java.net=ALL-UNNAMED
    --add-opens=java.base/java.nio.charset=ALL-UNNAMED
    --add-opens=java.base/jdk.internal.vm=ALL-UNNAMED
    --add-opens=java.base/sun.nio.ch=ALL-UNNAMED
    --add-opens=java.desktop/java.awt=ALL-UNNAMED
    --add-opens=java.desktop/java.awt.dnd.peer=ALL-UNNAMED
    --add-opens=java.desktop/java.awt.event=ALL-UNNAMED
    --add-opens=java.desktop/java.awt.image=ALL-UNNAMED
    --add-opens=java.desktop/java.awt.peer=ALL-UNNAMED
    --add-opens=java.desktop/javax.swing=ALL-UNNAMED
    --add-opens=java.desktop/javax.swing.plaf.basic=ALL-UNNAMED
    --add-opens=java.desktop/javax.swing.text.html=ALL-UNNAMED
    --add-opens=java.desktop/sun.awt=ALL-UNNAMED
    --add-opens=java.desktop/sun.awt.datatransfer=ALL-UNNAMED
    --add-opens=java.desktop/sun.awt.image=ALL-UNNAMED
    --add-opens=java.desktop/sun.awt.windows=ALL-UNNAMED
    --add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED
    --add-opens=java.desktop/sun.font=ALL-UNNAMED
    --add-opens=java.desktop/sun.java2d=ALL-UNNAMED
    --add-opens=java.desktop/sun.lwawt=ALL-UNNAMED
    --add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED
    --add-opens=java.desktop/sun.swing=ALL-UNNAMED
    --add-opens=java.desktop/com.apple.eawt=ALL-UNNAMED
    --add-opens=java.desktop/com.apple.eawt.event=ALL-UNNAMED
    --add-opens=java.desktop/com.apple.laf=ALL-UNNAMED
    --add-opens=jdk.attach/sun.tools.attach=ALL-UNNAMED
    --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
    --add-opens=jdk.jdi/com.sun.tools.jdi=ALL-UNNAMED
    --add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED
    --add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED
    -Xmx2048m
    -XX:+UseShenandoahGC
    -XX:ShenandoahGCHeuristics=compact
    tsaioil
        21
    tsaioil  
       2022-04-26 15:22:00 +08:00   ❤️ 1
    @devinww #15 只加那两行的确会导致 IDEA 运行不起来,补充加:
    -Dfile.encoding=UTF-8
    -Dsun.rmi.dgc.server.gcInterval=2147483646
    -XX:+UnlockExperimentalVMOptions
    -XX:+AlwaysPreTouch -XX:+UseShenandoahGC
    -XX:+UseLargePages
    -XX:-DontCompileHugeMethods
    --illegal-access=permit
    oneisall8955
        22
    oneisall8955  
       2022-04-26 15:27:33 +08:00   ❤️ 1
    如果项目是 java ,如 springboot ,VM options 行添加内存限制,这个很有用。
    whx
        23
    whx  
       2022-04-26 15:30:33 +08:00 via iPhone   ❤️ 1
    @devinww vmoptions 里面有-XX:+UseG1GC 吗?
    有的话去掉-XX:+UseG1GC 再加上
    -XX:+UseShenandoahGC
    -XX:ShenandoahGCHeuristics=compact
    试下。
    devinww
        24
    devinww  
    OP
       2022-04-26 18:50:38 +08:00
    @whx 可以起,肉眼可以看到内存数值变化很大
    devinww
        25
    devinww  
    OP
       2022-04-26 18:50:52 +08:00
    @qwerty01446 已抄作业 谢谢
    devinww
        26
    devinww  
    OP
       2022-04-26 19:26:50 +08:00
    @oneisall8955 是 java 项目,不过是用 tomcat 容器装的,也可以设置嘛,一半给多少呢
    devinww
        27
    devinww  
    OP
       2022-04-26 20:31:53 +08:00
    @qwerty01446 我和你一样,这么配置之后 17 好卡,暂时切回默认版本 11 了。
    qwerty01446
        28
    qwerty01446  
       2022-04-27 09:28:26 +08:00
    @devinww 是的,加了-XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact 这两行后 CPU 占用会特别多,可能就是 whx 在 13 楼说的原因吧 hh
    tanrenye
        29
    tanrenye  
       2022-04-27 09:46:09 +08:00
    加了上面大佬的参数后的确 CPU 占用很容易飙升,考虑到内存占用多点也没啥,还是算了,毕竟 Intel CPU 上去随时开飞机。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3288 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 14:12 · PVG 22:12 · LAX 07:12 · JFK 10:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.