jconsole 是基于 jmx 之上的一个 jvm 的监控工具。一个 java GUI 监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器 VM。用 java 写的 GUI 程序,用来监控 VM,并可监控远程的 VM,非常易用,而且功能非常强。在 Mac 下命令行里打 jconsole,选则进程就可以使用它了。
jconsole 主要监控 JVM 的概览、内存、线程、类、vm概要、MBean等内容。
一、运行jconsole工具
如果是本地环境,我们直接命令提示符窗口输入 jconsole 即可打开 jconsole GUI 程序(java环境变量已经配置好,如未配置好可以java->bin目录下双击jconsole也可运行)。
如果监测远程linux的tomcat服务器,需要在catalina.sh加入如下配置:
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
二、jconsole使用说明
在使用前最好对线程、堆栈有充分的认识,否则即使有问题也无从入手分析。
、
其中 VM 选项卡中显示的内容非常的多。在此选项卡中提供的信息包括以下内容。
摘要
运行时间 :开始以来,Java虚拟机的时间总额。
进程的CPU时间 :Java VM的开始,因为它消耗的CPU时间总量。
编译总时间 :累计时间花费在JIT编译。
主题
活动线程 :目前现场守护线程,加上非守护线程数量。
峰值 :活动线程的最高数目,因为Java虚拟机开始。
守护线程 :当前的活动守护线程数量。
总线程 :开始自Java虚拟机启动的线程总数,包括非守护进程,守护进程和终止的线程。
类
当前类装载 :目前加载到内存中的类数目。
总类加载 :从Java VM开始加载到内存中的类总和,包括那些后来被卸载的类。
已卸载类总数 :从Java虚拟机开始从内存中卸载的类的数目。
内存
当前的堆大小 :目前所占用的堆的千字节数。
分配的内存 :堆分配的内存总量。
最大堆最大值 :堆所占用的千字节的最大数目。
待最后确定的对象:待最后确定的对象的数量。
花在执行GC的垃圾收集器 :包括垃圾收集,垃圾收集器的名称,进行藏品的数量和总时间的信息。
操作系统
总物理内存
空闲物理内存
分配的虚拟内存
其他信息
VM参数 :输入参数的应用程序通过Java虚拟机,不包括的主要方法的参数。
类路径是由系统类加载器用于搜索类文件的类路径。
库路径 :加载库时要搜索的路径列表。
引导类路径 :引导类路径是由引导类加载器用于搜索类文件。
看似 jconsole 的操作功能比较少,但实际上包含非常多的内容。
JConsole 会消耗大量系统资源,因此 Oracle 建议仅在用于创建原型的开发环境中使用它。还建议使用远程监控将 JConsole 应用程序与所监控的平台隔离。因此线上使用的人非常的少,网上的相关教程也不是很多。
最后简单列举下几种常见的线程
[main] 主线程
[http-nio-8080-exec-10] http请求线程
[DefaultQuartzScheduler_QuartzSchedulerThread] 定时线程
[DefaultQuartzScheduler_Worker-1]
[Timer-3] 定时线程?(待确认)
[Catalina-utility-2] ?
内存入门简介参考
https://blog.csdn.net/u014729212/article/details/105607064