jvm 性能调优--问题请教

2020 年 1 月 12 日
 chunrong918

除了设置新生代,老年代比例大小,选择 gc 收集器,

还可以进行哪些方面的调优

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/637245

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX