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

请教一个问题,你们启动 Java -Xms -Xmx 是如何设定的

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

    4 核 8G 我那边启动参数-Xms -Xmx 都是 4G

    应用是 spring boot 没有使用操作堆外内存的情况

    这样导致一个问题就是应用的内存其实不会随着请求增加 导致内存上升,感觉这样是不是有点浪费内存

    本人 java 新手,不懂 jvm 我看别人复制粘贴的 jvm 优化就是初始分配跟最大分配的堆内存设置一样,这真的有效果么

    11 条回复    2021-08-18 16:45:18 +08:00
    ikas
        1
    ikas   104 天前
    -Xmx 配置为可以处理自己业务的最大内存...然后-Xms 与其一样..没什么浪费之说..那个内存反正闲着也是闲着
    0576coder
        2
    0576coder   104 天前
    @ikas
    比如你内存 8G 你总不能-Xms -Xmx 都是 4G 的话 那么系统内存就是一直在 40% 上下
    ikas
        3
    ikas   104 天前
    @0576coder 内存就是给你这个应用跑的...除非你这个服务器要跑多个应用?就算是多个那也要根据最大内存考虑...
    所以就算占用 40%也没事啊........配置一样就是为了减少 gc 操作...这个内存不存在什么浪费之说
    sagaxu
        4
    sagaxu   104 天前
    Xmx 太小,导致频繁 GC,增加延迟
    Xmx 太大,full gc 停顿太久,抖动明显
    cheng6563
        5
    cheng6563   104 天前
    jvm 一个很大诟病就是难以把已 gc 的内存还给操作系统。
    你如果把 Xmx 设置成 4G,就算实际你程序只会用 1g 也会因为内存碎片等各种各样的原因给你占到 4G 去,并且一直占着不回收。
    在 Java12 之后的版本加-XX:-ShrinkHeapInSteps 参数可以更激进地归还内存,但效果一般。
    换 openj9 效果较好,但 openj9 的 1.0 正式版不知道何年何月发布。
    Oktfolio
        6
    Oktfolio   104 天前
    4 核 8G 默认给的这么多 -Xms4g -Xmx4g -Xmn2g
    0576coder
        7
    0576coder   104 天前
    @cheng6563
    很好奇你们是如何设置的
    0576coder
        8
    0576coder   104 天前
    @sagaxu
    可以请教下你们线上是如何设置的吗
    sagaxu
        9
    sagaxu   104 天前 via Android
    @0576coder 内部管理后台 1G,标准服务 2G,高流量或逻辑复杂服务 4G
    chendy
        10
    chendy   104 天前
    Xms Xmx 设置一样的,外加一个 XX:+AlwaysPreTouch,内存给够让它好好干活就完事了
    0576coder
        11
    0576coder   104 天前
    @chendy
    XX:+AlwaysPreTouch 这个参数加了后 你们项目启动会变慢多少
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2184 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:54 · PVG 23:54 · LAX 07:54 · JFK 10:54
    ♥ Do have faith in what you're doing.