JVM调优

148 阅读1分钟

1. 技术点

1.1 eden区过大或者过小的影响

eden区变小, 新new出来的对象都在eden区,会导致频繁的young GC

eden区变大,会导致young GC的时间变长,扫描时间变长了, young GC全程是stw的,所有的请求都是暂停的

1.2 survivor大小的影响

survivor太小会导致一些对象轻易晋升到老年代

survivor过大,因为有一半不怎么使用,会浪费内存

2. 调优案例

image.png

3. jvm参数

3.1. GC日志常用 JVM 参数:

// 打印GC的详细信息
-XX:+PrintGCDetails

// 打印GC的时间戳
-XX:+PrintGCDateStamps

// 在GC前后打印堆信息
-XX:+PrintHeapAtGC

// 打印Survivor区中各个年龄段的对象的分布信息
-XX:+PrintTenuringDistribution

// JVM启动时输出所有参数值,方便查看参数是否被覆盖
-XX:+PrintFlagsFinal

// 打印GC时应用程序的停止时间
-XX:+PrintGCApplicationStoppedTime

// 打印在GC期间处理引用对象的时间(仅在PrintGCDetails时启用)
-XX:+PrintReferenceGC

4. 日志格式分析

blog.csdn.net/v123411739/…