在 Ubuntu 上评估 Java 程序性能好坏,通常可以从 JVM 自带工具、系统级监控、基准测试、Profiling 几个层面来做。下面按实用程度给你一个清晰指南。
java -version
建议:
jps —— 看 Java 进程jps -l
用来确认:
jstat —— JVM 运行状态(GC / 内存)jstat -gcutil <pid> 1000
重点看:
YGC / YGCT:年轻代 GC 次数 & 时间FGC / FGCT:Full GC 次数 & 时间O:老年代使用率✅ 好性能特征:
top / htop —— 系统资源占用top -p <pid>
或
htop
看:
jstack —— 看线程卡在哪jstack <pid> > thread.txt
用来判断:
jvisualvm(图形界面,最简单)jvisualvm
功能:
适合开发 / 测试机
async-profiler(强烈推荐)./profiler.sh -d 30 -f flamegraph.html <pid>
优点:
java -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=rec.jfr ...
用 jmc 打开分析。
@Benchmark
public void testMethod() {
// 被测代码
}
运行:
mvn clean package
java -jar benchmarks.jar
✅ 用来测:
ab(简单 HTTP)wrkJMeter(复杂业务)| 指标 | 好 | 差 |
|---|---|---|
| 吞吐量 | 高 | 低 |
| 延迟 | 稳定 & 低 | 抖动大 |
| GC | 少 & 短 | Full GC 频繁 |
| CPU | 合理利用 | 长期 100% |
| 内存 | 稳定 | 持续增长(泄漏) |
你可以告诉我:
我可以直接给你一套可执行的命令或脚本。