SuperAPI AI 工具集

java-performance

编程与开发

查看项目

更新于 10-15 12:47

技能介绍

用途

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 版本范围、收费模式或平台限制等信息。