原标题:Java-100天知识进阶-JVM调优工具-JDK自带工具-知识铺《八》
JVM 监控分析工具
一、JDK 自带工具
1. jconsole
JDK/bin 目录下, jconsole.exe 双击打开, 自动搜索本机运行的虚拟机进程。选择其中一个进程即可,开始进行JVM监控
1.1 基本介绍
JConsole 基本包括以下基本功能:概述、内存、线程、类、VM概要、MBean。
1.2 内存监控
1.2.1 内存视图中可选,7中内存类型监控
1.2.2 内存视图右下角有实时 堆与非堆的内存占用情况。
1.2.3 主体部分,可以看到一段时间内存的使用走势。
定位问题:
一般定位问题的时候,这个走势图很重要。如果有内存泄漏,走势图会持续增长。不是像上图所示,一直在5Mb徘徊,这种是正常现象,锯齿状,代表着程序的GC频繁。
1.3 线程监控
定位问题:
这里可以很方便检测是否有死锁的线程。
1.3 类 加载的类走势图
1.4 VM 概要
1.5 MBean
可以看到这里是内存中加载的Bean
1.6 远程监控
注意: 要使用 jconsole.exe 监控远程tomcat,必须在启动tomcat的时候,开启JMX接口。
-Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
2. jmap 工具
2.1 查看堆使用情况
jmap -heap pid
2.2 查看各内存区的使用情况
2.2.1 Eden 区内存使用率 72%
2.2.2 From 和 To 区内存容量一样大
young gc 很频繁
3. VisualVM 工具
3.1 VisualVM 是一个工具,它提供了一个可视界面。
3.2 和 jconsole 工具不同的是,这个工具可以根据需要安装插件。
安装这些插件
3.3 常用的下面的监视视图
CPU,堆,类,线程的使用情况走势图很清晰。
3.4 如果有异常情况,直接点击 堆 Dump
3.5 类很清晰
清晰看到类加载的情况。实例数,大小,这些都是定位问题必须看的。
3.6 堆对比功能(排查问题很重要)
很清晰看到一段时间内,实例数猛增的是那些。
3.7 双击上图中类名
这个视图,查看实例数,具体某个实例的值是什么。很清晰。
可以看到实例中字段类型:数组,对象,基本类型,静态字段,垃圾回收根节点,