4 核 8G 我那边启动参数-Xms -Xmx 都是 4G
应用是 spring boot 没有使用操作堆外内存的情况
这样导致一个问题就是应用的内存其实不会随着请求增加 导致内存上升,感觉这样是不是有点浪费内存
本人 java 新手,不懂 jvm 我看别人复制粘贴的 jvm 优化就是初始分配跟最大分配的堆内存设置一样,这真的有效果么
1
ikas 2021-08-18 00:37:58 +08:00
-Xmx 配置为可以处理自己业务的最大内存...然后-Xms 与其一样..没什么浪费之说..那个内存反正闲着也是闲着
|
3
ikas 2021-08-18 01:00:54 +08:00
@0576coder 内存就是给你这个应用跑的...除非你这个服务器要跑多个应用?就算是多个那也要根据最大内存考虑...
所以就算占用 40%也没事啊........配置一样就是为了减少 gc 操作...这个内存不存在什么浪费之说 |
4
sagaxu 2021-08-18 07:44:52 +08:00 1
Xmx 太小,导致频繁 GC,增加延迟
Xmx 太大,full gc 停顿太久,抖动明显 |
5
cheng6563 2021-08-18 09:55:50 +08:00
jvm 一个很大诟病就是难以把已 gc 的内存还给操作系统。
你如果把 Xmx 设置成 4G,就算实际你程序只会用 1g 也会因为内存碎片等各种各样的原因给你占到 4G 去,并且一直占着不回收。 在 Java12 之后的版本加-XX:-ShrinkHeapInSteps 参数可以更激进地归还内存,但效果一般。 换 openj9 效果较好,但 openj9 的 1.0 正式版不知道何年何月发布。 |
6
Oktfolio 2021-08-18 10:25:05 +08:00
4 核 8G 默认给的这么多 -Xms4g -Xmx4g -Xmn2g
|
10
chendy 2021-08-18 16:01:02 +08:00
Xms Xmx 设置一样的,外加一个 XX:+AlwaysPreTouch,内存给够让它好好干活就完事了
|
12
tanweiiiii 2022-01-02 16:39:10 +08:00
我们用的 k8s 默认是 pod 的 limit 内存的 75%
|