一次JVM YGC调优示例

2023年 7月 18日 45.7k 0

1.前期知识

其实掌握的知识点已经够多了,我们要做的就是一次次应用和实战,把他串联起来就可以学以致用

young和old的比例是1:2

垃圾回收采用的是ParNew + CMS

查看jc的信息命令 jstat -gcutil pid 1000, 可以看出多久来一次YGC

-XX:+PrintGCDateStamps:打印 gc 发生的时间戳。
-XX:+PrintTenuringDistribution:打印 gc 发生时的分代信息。
-XX:+PrintGCApplicationStoppedTime:打印 gc 停顿时长
-XX:+PrintGCApplicationConcurrentTime:打印 gc 间隔的服务运行时长
-XX:+PrintGCDetails:打印 gc 详情,包括 gc 前/内存等。
-Xloggc:../gclogs/gc.log.date:指定 gc log 的路径

gc 吞吐量是 95%,它指的是 JVM 运行业务代码的时长占 JVM 总运行时长的比例,这个比例确实有些低了

增大 young 区,YGC 的时长也会迅速增大。 GC 的年轻代提升机制,每次 GC 后,JVM 存活代数大于 MaxTenuringThreshold 的对象提升到老年代。当然,JVM 还有动态年龄计算的规则:按照年龄从小到大对其所占用的大小进行累积,当累积的某个年龄大小超过了 survivor 区的一半时,取这个年龄和 MaxTenuringThreshold 中更小的一个值,作为新的晋升年龄阈值,但看各代总的内存大小,是达不到 survivor 区的一半的。

2.做的动作以及动作的依据

分代调整

偏向锁停顿

young 区大小翻倍

3.参考文章

juejin.cn/post/718404…

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论