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

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

  •  
  •   0576coder · 2021-08-17 22:49:29 +08:00 · 2672 次点击
    这是一个创建于 1198 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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