JVM调优 - 工具篇

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

1. JConsole工具

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

JAVA程序运行的概况
堆内存使用情况
JAVA程序线程信息

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

JAVA程序已加载类的信息

2. Visual VM工具

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

2.1 监控程序概况

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


Visual VM显示程序概况

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

Visual VM显示监控信息

  生成的堆快照信息如下:

Visual VM显示堆快照概况
Visual VM显示堆快照的类概况

2.2 Thread Dump

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

Visual VM线程查看

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

Visual VM线程Dump

2.3 性能分析

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

Visual VM监控线程占用CPU时间

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

Visual VM监控线程占用内存概况

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容