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