温馨提示×

ubuntu怎么测java性能好坏

小樊
35
2026-09-22 09:36:33
栏目: 编程语言

在 Ubuntu 上评估 Java 程序性能好坏,通常可以从 JVM 自带工具、系统级监控、基准测试、Profiling 几个层面来做。下面按实用程度给你一个清晰指南。


一、最基础:看 Java 是否“跑得动、跑得稳”

1. 确认 Java 环境

java -version

建议:

  • 生产环境用 LTS 版本(如 Java 11 / 17 / 21)
  • 确认是 HotSpot(OpenJDK / Oracle)

二、运行中的 Java 性能观测(最重要)

1. jps —— 看 Java 进程

jps -l

用来确认:

  • 有哪些 Java 进程
  • PID 是多少(后面工具要用)

2. jstat —— JVM 运行状态(GC / 内存)

jstat -gcutil <pid> 1000

重点看:

  • YGC / YGCT:年轻代 GC 次数 & 时间
  • FGC / FGCT:Full GC 次数 & 时间
  • O:老年代使用率

✅ 好性能特征:

  • Full GC 很少
  • GC 时间占比低(< 5%)

3. top / htop —— 系统资源占用

top -p <pid>

或

htop

看:

  • CPU 占用
  • 内存(RES)
  • 是否频繁 GC 导致 CPU 抖动

4. jstack —— 看线程卡在哪

jstack <pid> > thread.txt

用来判断:

  • 是否有死锁
  • 是否大量线程 BLOCKED / WAITING

三、专业级:Java Profiling(定位慢代码)

1. jvisualvm(图形界面,最简单)

jvisualvm

功能:

  • CPU 热点
  • 内存分配
  • 线程状态

适合开发 / 测试机


2. async-profiler(强烈推荐)

./profiler.sh -d 30 -f flamegraph.html <pid>

优点:

  • 性能损耗极低
  • 生成火焰图
  • 精准定位“慢方法”

3. JFR(Java Flight Recorder,生产级)

java -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=rec.jfr ...

用 jmc 打开分析。


四、做“性能基准测试”(对比好坏)

1. JMH(官方微基准测试)

@Benchmark
public void testMethod() {
    // 被测代码
}

运行:

mvn clean package
java -jar benchmarks.jar

✅ 用来测:

  • 单个方法
  • 算法性能
  • 不同实现对比

2. 压测工具

  • ab(简单 HTTP)
  • wrk
  • JMeter(复杂业务)

五、判断 Java 性能“好坏”的核心指标

指标 好 差
吞吐量 高 低
延迟 稳定 & 低 抖动大
GC 少 & 短 Full GC 频繁
CPU 合理利用 长期 100%
内存 稳定 持续增长(泄漏)

六、典型“Java 性能差”的表现

  • Full GC 每秒一次
  • 接口 RT 从 10ms 变 2s
  • CPU 高但业务量没涨
  • 内存只增不减

七、如果你愿意,我可以更具体

你可以告诉我:

  1. 是 Web 服务 / 大数据 / 算法 / 游戏?
  2. 想测 单方法 / 接口 / 整体系统?
  3. 是 本地测试还是服务器生产环境?

我可以直接给你一套可执行的命令或脚本。

0 踩