在 Ubuntu 上测 Java 性能,常见做法分为基准测试(Benchmark)、运行时性能分析(Profiling)和系统级监控三类。下面按实用程度给你一套清晰方案。
JMH 是 OpenJDK 官方微基准测试框架,最准确。
安装(Maven 项目)
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.37</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.37</version>
</dependency>
示例
@Benchmark
@OutputTimeUnit(TimeUnit.MICROSECONDS)
public void testMethod() {
// 被测代码
}
运行:
mvn clean package
java -jar target/benchmarks.jar
sudo apt install visualvm
visualvm
jstack <pid>
jstat -gcutil <pid> 1000
jmap -dump:live,format=b,file=heap.hprof <pid>
git clone https://github.com/jvm-profiling-tools/async-profiler
./profiler.sh -d 30 -f flamegraph.html <pid>
生成火焰图,非常直观。
top -p <pid>
htop
java -Xlog:gc*:file=gc.log -XX:+PrintGCDetails ...
micrometer + actuatorab -n 10000 -c 100 http://localhost:8080/api
sudo apt install wrk
wrk -t12 -c400 -d30s http://localhost:8080/api
如果你愿意,可以告诉我:
我可以直接给你一套可复制的命令或代码模板。