除了设置新生代,老年代比例大小,选择 gc 收集器,
还可以进行哪些方面的调优
1
ericgui 2020 年 1 月 12 日
|
2
sagaxu 2020 年 1 月 12 日 via Android
如果有固定的调优参数,jvm 早做成默认参数了
|
3
coolmenu 2020 年 1 月 12 日 via Android
Oracle 估计快出一版基于 ai 的调教了
|
4
zartouch 2020 年 1 月 12 日
建议去翻 gc 参数,不同的 gc 收集器是不一样的。比如 cms 之前我们还会设置,objects 占比多少的时候启动 cms,启用多少线程数,full gc 时强制预处理( CMSMaxAbortablePrecleanTime 默认 5s )。其他的还有晋升老年代的阈值等
|
5
wysnylc 2020 年 1 月 12 日
建议开始了解 zgc,已经取消新生代老年代永久代,就剩下个元空间
|
6
chendy 2020 年 1 月 12 日
|
7
HiShan 2020 年 1 月 12 日
具体场景是啥?每个场景适用不同的 gc 就行了,一般都不用调
|
8
anyele 2020 年 1 月 12 日 via Android
搭车问,有 zgc 后,还需要 jvm 调优吗
|
9
lewis89 2020 年 1 月 12 日
其实说实话 JVM 真的没啥好调优的,除了在 吞吐量 内存占用 延时上 做个取舍,选个 GC 算法,其余真的没啥好调的,默认就够了,像 CMS 新生代采用 标记复制算法,已经给你配好比例了 你自己去优化完全就是 自取其辱。
|
10
cubecube 2020 年 1 月 12 日
@lewis89 也不完全对。jvm 丰富的 gc 参数灵活性还是很棒的,不同的场景下不同的适用参数,在内存受限或者进程常驻的情况下还挺重要的。另外 cms 部分参数乱调整的话,还不如不调整, 容易适得其反,导致频繁 full gc
|
11
cubecube 2020 年 1 月 12 日
cms 在 jdk14 貌似都要被删除了,新项目最好直接 g1
|
12
lewis89 2020 年 1 月 13 日
@cubecube #10 就微服务架构这块,我觉得没啥好调优的,一个服务实例撑死就给几个 G 的内存,在 GC 回收参数上调优基本上没有太大意义,单个服务实例如果出现问题,通过链路监测降低它的负载,或者直接让它下线,让其它实例顶上,反正实例都是无状态的,问题不大。
|
13
lewis89 2020 年 1 月 13 日 @cubecube #10 主要现在已经不是单体时代了,网上有很多段子,说公司老的服务 老是 OOM 重启,但是又排查不了原因,leader 为了大家晚上睡个好觉,后来干脆搞了十几个实例副本,自动负载均衡,如果哪个服务挂壁了 让它直接 down 掉重启,让备用实例顶上。
|
14
Aresxue 2020 年 1 月 13 日
感觉还不如研究下怎么调整线程数、数据库连接这些东西。。。
|