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

这 idea 内存占用好迷

  •  
  •   devinww · 71 天前 · 2948 次点击
    这是一个创建于 71 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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  
       71 天前 via iPad   ❤️ 1
    Java 祖传
    whx
        2
    whx  
       71 天前 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
       71 天前
    @whx 没办法,还在用祖传 1.8
    Rache1
        4
    Rache1  
       71 天前
    最新版的内存好像出了问题,我这里可以跑到 14G 😂
    whx
        5
    whx  
       71 天前 via iPhone
    @devinww 最新版的 idea 自带的 jre 是 11 ,是支持 Shenandoah GC 的,这个是修改 idea 的运行环境,和项目的开发环境没关系。

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

    我在 win10 下测试最新版的 idea 社区版是可以的。
    devinww
        6
    devinww  
    OP
       71 天前
    @whx 你说的是 runtime 啊,这个我已经升到最新的 17 了
    Runtime version: 17.0.1+12-b164.8 aarch64
    wqhui
        7
    wqhui  
       71 天前
    我开 4 个项目 5.8G ,试试把 idea 没用的插件卸了
    whx
        8
    whx  
       71 天前 via iPhone
    @devinww 17 的 Shenandoah GC 效果更好。
    qwerty01446
        9
    qwerty01446  
       71 天前
    @whx 最新版 IDEA ,runtime 是 17 ,效果很好。又是涨知识的一天,多谢哈哈哈。
    2696284032
        10
    2696284032  
       71 天前
    我跑微服务,开个 10 个项目,idea 用 4 个 G 内存,直接最低堆内存:-Xms128m -Xmx128m
    qwerty01446
        11
    qwerty01446  
       71 天前
    @whx 不过 compact 也回收的挺激进的? IDEA 的 CPU 使用占用很高,不知道是 BUG 还是什么原因
    qwerty01446
        12
    qwerty01446  
       71 天前
    @whx 抱歉回复的这么多。有点像 JBR17 的问题,我切换到 11 ,同样的设置 CPU 占用就正常了。
    whx
        13
    whx  
       71 天前 via iPhone   ❤️ 1
    @qwerty01446 没关系,17 的 Shenandoah GC 相比 11 有大升级,停顿时间更短,可能是这个原因导致。
    devinww
        14
    devinww  
    OP
       71 天前
    @2696284032 我把内存设置低了,他会在根目录下产生一个文件
    devinww
        15
    devinww  
    OP
       71 天前
    @qwerty01446 你在 vm 里加了-XX:+UseShenandoahGC
    -XX:ShenandoahGCHeuristics=compact
    嘛,
    我加了之后 idea 直接起不来了。。去了才行
    2696284032
        16
    2696284032  
       71 天前
    @devinww 我是 window ,mac 不了解了,不过我 idea 分配的一个 G ,然后项目分配 128M 或者 256 启动的
    DinnyXu
        17
    DinnyXu  
       71 天前
    我跟你一样型号,我 idea 设置的是 3096 ,我一个项目里面有十几个微服务模块,平时的话会开 4 个服务,查看活动监视器内存占用是 3-5 个 G ,大多数时间是 3 点几。你需要注意的是自己的 app 是不是 arm 支持的,还有 jdk 是否是 arm 的,这样能减少内存的占用
    chendy
        18
    chendy  
       71 天前
    不用的插件关一波应该能减少一些内存占用
    手里 20 年的大屎山,才吃了 5g 内存( xmx 4g
    qwerty01446
        19
    qwerty01446  
       71 天前
    @devinww 我也是 M1 的 mac ,最新版 IDEA+JBR17 ,加了这两行是可以启动的,不过 CPU 使用率很高,一直在 600-800 ,我换成 JBR11 之后,就好了。
    qwerty01446
        20
    qwerty01446  
       71 天前   ❤️ 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  
       71 天前   ❤️ 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  
       71 天前   ❤️ 1
    如果项目是 java ,如 springboot ,VM options 行添加内存限制,这个很有用。
    whx
        23
    whx  
       71 天前 via iPhone   ❤️ 1
    @devinww vmoptions 里面有-XX:+UseG1GC 吗?
    有的话去掉-XX:+UseG1GC 再加上
    -XX:+UseShenandoahGC
    -XX:ShenandoahGCHeuristics=compact
    试下。
    devinww
        24
    devinww  
    OP
       70 天前
    @whx 可以起,肉眼可以看到内存数值变化很大
    devinww
        25
    devinww  
    OP
       70 天前
    @qwerty01446 已抄作业 谢谢
    devinww
        26
    devinww  
    OP
       70 天前
    @oneisall8955 是 java 项目,不过是用 tomcat 容器装的,也可以设置嘛,一半给多少呢
    devinww
        27
    devinww  
    OP
       70 天前
    @qwerty01446 我和你一样,这么配置之后 17 好卡,暂时切回默认版本 11 了。
    qwerty01446
        28
    qwerty01446  
       70 天前
    @devinww 是的,加了-XX:+UseShenandoahGC -XX:ShenandoahGCHeuristics=compact 这两行后 CPU 占用会特别多,可能就是 whx 在 13 楼说的原因吧 hh
    tanrenye
        29
    tanrenye  
       70 天前
    加了上面大佬的参数后的确 CPU 占用很容易飙升,考虑到内存占用多点也没啥,还是算了,毕竟 Intel CPU 上去随时开飞机。。。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4104 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 07:45 · PVG 15:45 · LAX 00:45 · JFK 03:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.