在Linux系统中,有多种方法可以查看Java应用程序的性能指标。以下是一些常用的方法:
-
jstat:
jstat
是JDK自带的一个命令行工具,用于监控JVM的垃圾回收、线程和类加载等方面的性能指标。jstat -gc
# 查看垃圾回收信息 jstat -thread # 查看线程信息 jstat -class # 查看类加载信息 -
jmap:
jmap
用于生成堆转储(heap dump)或打印出堆的内存映射,帮助分析内存使用情况。jmap -heap
# 查看堆的内存映射信息 jmap -dump:format=b,file= # 生成堆转储文件 -
jstack:
jstack
用于生成Java线程的堆栈跟踪信息,有助于分析线程状态和死锁等问题。jstack
> stack.log # 将线程堆栈信息输出到文件 -
VisualVM: VisualVM是一个可视化的工具,可以连接到远程或本地的Java进程,提供详细的性能分析和内存分析功能。
jvisualvm
# 连接到Java进程 -
YourKit Java分析器: YourKit是一个商业的分析器,提供了丰富的功能来监控和分析Java应用程序的性能。
yourkit-start-agent.sh # 启动YourKit代理 yourkit-java-agent.jar # YourKit Java分析器jar包
-
Java Mission Control (JMC): JMC是Oracle提供的一个免费的性能监控和分析工具,适用于Java 7及以上版本。
jmc # 启动JMC jmc monitor
# 连接到Java进程进行监控 -
Prometheus + Grafana: 通过将Java应用程序与Prometheus监控系统和Grafana可视化工具结合使用,可以实时监控和展示Java应用程序的性能指标。
- 使用
jmx_exporter
或Micrometer
等库将Java应用程序的指标暴露给Prometheus。 - 在Grafana中配置Prometheus数据源,并创建仪表板来展示性能指标。
- 使用
-
Java Flight Recorder (JFR): JFR是JDK 7及以上版本提供的一种低开销的诊断工具,用于收集各种性能数据。
jcmd
JFR.start # 启动JFR录制 # 在一段时间后停止录制 jcmd JFR.stop # 将录制的数据导出到文件 jcmd JFR.export
通过这些方法,您可以获得Java应用程序的CPU使用率、内存使用情况、垃圾回收活动、线程状态等多方面的性能指标,从而进行性能调优和故障排查。