Jvm-GC日志分析工具

jdk自带的工具

1.jconsole

Jconsole(Java Monitoring and Management Console)是从java5开始,在JDK中自带的java监控和管理控制台,用于对JVM中内存,线程和类等的监控,是一个基于JMX(java management extensions)的GUI性能监测工具。jconsole使用jvm的扩展机制获取并展示虚拟机中运行的应用程序的性能和资源消耗等信息。

直接在jdk/bin目录下点击jconsole.exe即可启动


界面如下:

在弹出的框中可以选择本机的监控本机的java应用,也可以选择远程的java服务来监控,如果监控远程服务需要在tomcat启动脚本中添加如下代码:

 -Dcom.sun.management.jmxremote.port=6969  
 -Dcom.sun.management.jmxremote.ssl=false  
 -Dcom.sun.management.jmxremote.authenticate=false

连接进去之后,就可以看到jconsole概览图和主要的功能:概述、内存、线程、类、VM、MBeans

①概述,以图表的方式显示出堆内存使用量,活动线程数,已加载的类,CUP占用率的折线图,可以非常清晰的观察在程序执行过程中的变动情况。

②内存,主要展示了内存的使用情况,同时可以查看堆和非堆内存的变化值对比,也可以点击执行GC来处罚GC的执行

③线程,主界面展示线程数的活动数和峰值,同时点击左下方线程可以查看线程的详细信息,比如线程的状态是什么,堆栈内容等,同时也可以点击“检测死锁”来检查线程之间是否有死锁的情况。

④类,主要展示已加载类的相关信息。

⑤VM 概要,展示JVM所有信息总览,包括基本信息、线程相关、堆相关、操作系统、VM参数等。

⑥Mbean,查看Mbean的属性,方法等

2.VisualVM

VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于 Java 技术的应用程序(Java 应用程序)的详细信息。VisualVM 对 Java Development Kit (JDK) 工具所检索的 JVM 软件相关数据进行组织,并通过一种使您可以快速查看有关多个 Java 应用程序的数据的方式提供该信息。您可以查看本地应用程序以及远程主机上运行的应用程序的相关数据。此外,还可以捕获有关 JVM 软件实例的数据,并将该数据保存到本地系统,以供后期查看或与其他用户共享。
VisualVM 是javajdk自带的最牛逼的调优工具了吧,几乎涉及了jvm调优的方方面面。同样是在jdk/bin目录下面双击jvisualvm.exe既可使用

启动起来后和jconsole 一样同样可以选择本地和远程,如果需要监控远程同样需要配置相关参数,主界面如下:


VisualVM可以根据需要安装不同的,每个插件的关注点都不同,有的主要监控GC,有的主要监控内存,有的监控线程等


如果进入插件发现可用插件下为空白。


解决可用插件下为空白:
⑴进入这个网址:https://visualvm.github.io/pluginscenters.html
⑵查看JDK版本


⑶我的是1.8.0-jdk8所以选择如下图的链接

⑷把这个链接写在插件的设置中


⑸然后就OK了


具体插件功能下次再学习吧

第三方调优工具

1.MAT

MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速、功能丰富的Java heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。使用内存分析工具从众多的对象中进行分析,快速的计算出在内存中对象的占用大小,看看是谁阻止了垃圾收集器的回收工作,并可以通过报表直观的查看到可能造成这种结果的对象。

通常内存泄露分析被认为是一件很有难度的工作,一般由团队中的资深人士进行。不过要介绍的 MAT(Eclipse Memory Analyzer)被认为是一个“傻瓜式“的堆转储文件分析工具,你只需要轻轻点击一下鼠标就可以生成一个专业的分析报告。和其他内存泄露分析工具相比,MAT 的使用非常容易,基本可以实现一键到位,即使是新手也能够很快上手使用。

MAT以eclipse 插件的形式来安装,可以利用visualvm或者是 jmap命令生产堆文件,导入eclipse mat中生成分析报告:


生产这会报表的同时也会在dump文件的同级目录下生成三份(dump_Top_Consumers.zip、dump_Leak_Suspects.zip、dump_Top_Components.zip)分析结果的html文件,方便发送给相关同事来查看。
需要关注的是下面的Actions、Reports、Step by Step区域:

更多介绍:

  • Histogram:列出内存中的对象,对象的个数以及大小,支持正则表达式查找,也可以计算出该类所有对象的retained size
  • Dominator Tree:列出最大的对象以及其依赖存活的Object (大小是以Retained Heap为标准排序的)
  • Top Consumers : 通过图形列出最大的object
  • duplicate classes :检测由多个类装载器加载的类

  • Leak Suspects :内存泄漏分析

  • Top Components: 列出大于总堆数的百分之1的报表。
  • Component Report:分析对象属于同一个包或者被同一个类加载器加载

还有更多强大的功能等你开发...

2.GC Easy

这是一个web工具,在线使用非常方便.
地址: http://gceasy.io
进入官网,讲打包好的zip或者gz为后缀的压缩包上传,过一会就会拿到分析结果

参考原文:http://www.ityouknow.com/jvm/2017/09/22/jvm-tool.html

你可能感兴趣的:(Jvm-GC日志分析工具)