用途
java-performance 是一个 Java 性能调优技能,目标是通过性能剖析、GC 调优和内存分析来优化 JVM 性能。它覆盖垃圾回收调优、内存分析、CPU 剖析以及使用 JMH 进行基准测试。
主要能力
该技能提供以下方面的参考内容:
- GC 调优:面向低延迟或高吞吐场景调整垃圾回收器。
- CPU 剖析:定位 CPU 热点。
- 内存分析:分析内存泄漏。
- 基准测试:对代码性能进行基准测试。
- 容器优化:优化容器环境下的 JVM 设置。
使用方式
通过技能调用方式使用:
Skill("java-performance")
GC 预设参数
高吞吐:
-XX:+UseG1GC
-XX:MaxGCPauseMillis=200
-Xms4g -Xmx4g
-XX:+AlwaysPreTouch
低延迟:
-XX:+UseZGC
-XX:+ZGenerational
-Xms8g -Xmx8g
内存受限:
-XX:+UseSerialGC
-Xms512m -Xmx512m
-XX:+UseCompressedOops
容器优化:
-XX:+UseContainerSupport
-XX:MaxRAMPercentage=75.0
-XX:+ExitOnOutOfMemoryError
剖析命令
# Thread dump
jstack -l <pid> > threaddump.txt
# Heap dump
jmap -dump:format=b,file=heap.hprof <pid>
# GC analysis
jstat -gcutil <pid> 1000 10
# Flight recording
jcmd <pid> JFR.start duration=60s filename=app.jfr
# Async profiler
./profiler.sh -d 30 -f profile.html <pid>
JMH 基准测试
@BenchmarkMode(Mode.Throughput)
@Warmup(iterations = 3, time = 1)
@Measurement(iterations = 5, time = 1)
@State(Scope.Benchmark)
public class MyBenchmark {
@Benchmark
public void testMethod(Blackhole bh) {
bh.consume(compute());
}
}
GC 对比
| GC | 延迟 | 吞吐量 | 堆大小 |
|---|---|---|---|
| G1 | 中 | 高 | 4-32GB |
| ZGC | 极低 | 中 | 8GB-16TB |
| Shenandoah | 极低 | 中 | 8GB+ |
| Parallel | 高 | 极高 | 任意 |
问题排查
| 问题 | 原因 | 解决方案 |
|---|---|---|
| GC 抖动 | 堆过小 | 增大堆 |
| 高延迟 | GC 暂停 | 切换到 ZGC |
| 内存泄漏 | 对象滞留 | 堆转储 + MAT |
| CPU 峰值 | 热点循环 | 剖析 + 优化 |
适用场景
当你需要以下操作时可以使用本技能:调优 GC 以实现低延迟或高吞吐、剖析 CPU 热点、分析内存泄漏、对代码性能进行基准测试、优化容器设置。
限制
资料未提供该技能的安装方式、依赖要求、支持的具体 JVM 版本范围、收费模式或平台限制等信息。