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 双击上图中类名

这个视图,查看实例数,具体某个实例的值是什么。很清晰。

可以看到实例中字段类型:数组,对象,基本类型,静态字段,垃圾回收根节点,循环

打开APP阅读更多精彩内容