JVM调优 - 工具篇

在人生的道路上,当你的希望一个个落空的时候,你也要坚定,要沉着。 —— 朗费罗

1. JConsole工具

JConsole工具是JDK自带的图形化性能监控工具(在%JAVA_HOME%/bin目录下)。通过JConsole工具,可以查看JAVA程序的运行情况,监控堆信息、线程信息、检测线程死锁等情况。
  在连接上JAVA程序后,便可以查看程序的运行概况。以下图中分别显示了JAVA程序的概况、堆内存的使用情况、线程数量、加载类的数量。

JVM调优 - 工具篇_第1张图片
JAVA程序运行的概况
JVM调优 - 工具篇_第2张图片
堆内存使用情况
JVM调优 - 工具篇_第3张图片
JAVA程序线程信息

使用"检测死锁",还可以自动检测到多线程应用程序的线程死锁情况。

JVM调优 - 工具篇_第4张图片
JAVA程序已加载类的信息

2. Visual VM工具

  Visual VM是一个故障诊断和性能监控的可视化工具,集成了多种性能统计工具的功能。

2.1 监控程序概况

  通过Visual VM,可查看应用程序的基本情况。


JVM调优 - 工具篇_第5张图片
Visual VM显示程序概况

  监控Tab页,可监控程序CPU、堆、MetaSpace(JDK1.8)、永久区(JDK1.7及以下)、类加载和线程数的总体情况。另还可以手工执行Full GC和生成堆快照。

JVM调优 - 工具篇_第6张图片
Visual VM显示监控信息

  生成的堆快照信息如下:

JVM调优 - 工具篇_第7张图片
Visual VM显示堆快照概况
JVM调优 - 工具篇_第8张图片
Visual VM显示堆快照的类概况

2.2 Thread Dump

  Visual VM的Thread页面提供了详细的线程信息。点击Thread Dump按钮可以导出当前所有线程的栈信息。

JVM调优 - 工具篇_第9张图片
Visual VM线程查看

如果Visual VM在当前程序中找到死锁,则会在Thread页面进行提示。

JVM调优 - 工具篇_第10张图片
Visual VM线程Dump

2.3 性能分析

  Visual VM有两个采样器,在采样器页面下,显示了CPU和内存两个性能采样器,用于实时地监控程序信息。CPU采样器可以将CPU占用时间定位到线程和方法,内存采样器可以查看当前程序的堆信息。

JVM调优 - 工具篇_第11张图片
Visual VM监控线程占用CPU时间

  通过CPU的采样功能,可以找到该程序中占用CPU时间最长的线程。

JVM调优 - 工具篇_第12张图片
Visual VM监控线程占用内存概况

  通过内存的采样功能,可以找到该程序中占用内存最多的线程。

你可能感兴趣的:(JVM调优 - 工具篇)