性能监控之可视化故障处理工具 JConsole
1.JConsole简介
Jconsole(Java Monitoring and Management Console)是一款基于JMX(Java Management Extensions)的可视化监视,管理工具。它的主要功能是通过JMX的MBean(ManagedBean)对系统进行信息收集和参数动态调整。
2.JConsole启动
通过JDK/bin目录下的jconsole.exe启动jconsole后,会自动搜索出本机运行的所有虚拟机进程,而不需要用户自己使用jps查询。也可以使用下面的“远程进程”功能来连接远程服务器,对远程虚拟机进行监控。
远程连接参考:https://www.cnblogs.com/think-in-java/p/6138439.html
3.JConsole使用简介
3.1概述
概述选项卡中显示CPU使用率,内存使用率,线程数,Java VM中加载的类的监控信息。右键单机图表可以保存数据。
3.2内存
内存标签功能“执行GC”的按钮,可以单击执行垃圾收集。
3.3线程
在左下角的“线程”列表列出了所有的活动线程。如果你输入一个“过滤器”字段中的字符串,线程列表将只显示其名称中包含你输入字符串线程。点击一个线程在线程列表的名称,显示该线程的信息的权利,包括线程的名称,状态、阻塞和等待的次数、堆栈跟踪。
红色 :峰值线程数
蓝 :活动线程数
检测死锁线程:要检查如果您的应用程序已经陷入了僵局运行(例如,您的应用程序似乎是挂了),死锁的线程可以通过点击“检测死锁”按钮检测。 如果检测到任何死锁的线程,这些都显示在一个新的标签,旁边出现的“主题”标签
package com.ryj.hotspot; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class JConsoleTest { static void createBusyThread() { Thread t = new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub while (true) { } } }, "testBusyThread"); t.start(); } static void createLockThread(Object lock) { Thread t = new Thread(new Runnable() { @Override public void run() { synchronized (lock) { try { lock.wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }, "testLockThread"); t.start(); } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br.readLine(); createBusyThread(); br.readLine(); Object obj = new Object(); createLockThread(obj); } }
3.4类
3.5VM概要