在人生的道路上,当你的希望一个个落空的时候,你也要坚定,要沉着。 —— 朗费罗
1. JConsole工具
JConsole工具是JDK自带的图形化性能监控工具(在%JAVA_HOME%/bin目录下)。通过JConsole工具,可以查看JAVA程序的运行情况,监控堆信息、线程信息、检测线程死锁等情况。
在连接上JAVA程序后,便可以查看程序的运行概况。以下图中分别显示了JAVA程序的概况、堆内存的使用情况、线程数量、加载类的数量。
使用"检测死锁",还可以自动检测到多线程应用程序的线程死锁情况。
2. Visual VM工具
Visual VM是一个故障诊断和性能监控的可视化工具,集成了多种性能统计工具的功能。
2.1 监控程序概况
通过Visual VM,可查看应用程序的基本情况。
监控Tab页,可监控程序CPU、堆、MetaSpace(JDK1.8)、永久区(JDK1.7及以下)、类加载和线程数的总体情况。另还可以手工执行Full GC和生成堆快照。
生成的堆快照信息如下:
2.2 Thread Dump
Visual VM的Thread页面提供了详细的线程信息。点击Thread Dump按钮可以导出当前所有线程的栈信息。
如果Visual VM在当前程序中找到死锁,则会在Thread页面进行提示。
2.3 性能分析
Visual VM有两个采样器,在采样器页面下,显示了CPU和内存两个性能采样器,用于实时地监控程序信息。CPU采样器可以将CPU占用时间定位到线程和方法,内存采样器可以查看当前程序的堆信息。
通过CPU的采样功能,可以找到该程序中占用CPU时间最长的线程。
通过内存的采样功能,可以找到该程序中占用内存最多的线程。