dump文件分析工具有哪些_如何解析xml文件

dump文件分析工具有哪些_如何解析xml文件/前言/在讲解Mat工具之前我们先来看下几个关于Dump/文件的问题Dump文件是什么Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中我们拿到Dump文件有什么用的?假如JVM因为内存溢出的原因宕机了,而程序的日志里面并没有关于溢出所在对象的信息,此时我们就需要通过分析Dump文件来找到问题原因Dump文件怎么生成?第一种在启动JVM时指定参数 #指定生成Dump文件的异常类型 -XX:+HeapDumpOnOutOf

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

/ 前言 /

在讲解Mat工具之前我们先来看下几个关于Dump/文件的问题

  • Dump文件是什么

    Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中

  • 我们拿到Dump文件有什么用的?

    假如JVM因为内存溢出的原因宕机了, 而程序的日志里面并没有关于溢出所在对象的信息, 此时我们就需要通过分析Dump文件来找到问题原因

  • Dump文件怎么生成?

    • 第一种

      在启动JVM时指定参数

        # 指定生成Dump文件的异常类型
        -XX:+HeapDumpOnOutOfMemoryError
        # 指定Dump文件生成的位置
        -XX:HeapDumpPath=/usr/local/jvm/dumps
      
    • 第二种

      如果你在启动JVM时没有指定参数, 那么可以使用第二种方式来生成Dump文件, 使用JVM自带的工具jmap

      jmap -dump:file=/usr/local/jvm/dumps/check.dump PID
      

      PID的获取可以通过ps | top指令来获取

      ps -ef|grep java
      
      top
      

/ 1 / 安装Mat

Mat是Eclipse的一个插件, 也可以独立运行, 所以即使你使用IDEA也可以独立使用Mat
Mat官网下载地址
dump文件分析工具有哪些_如何解析xml文件
根据操作系统选择对应的版本即可
下载下来是一个zip压缩包解压即可
Mac解压后是一个.app, 直接运行会报错
dump文件分析工具有哪些_如何解析xml文件
我们需要修改一下启动方式或者将.app文件移动到应用程序下

/Users/xxx/Downloads/mat.app/Contents/MacOS/MemoryAnalyzer -data ./workspace

启动后的界面
dump文件分析工具有哪些_如何解析xml文件
启动后在导入Dump文件时有可能会报错

An internal error occurred during: "Parsing heap dump from 'xxx.dump'".
Java heap space

这是因为Dump文件的大小超出了Mat默认的读取范围, 我们需要修改Mat的配置文件
找到MemoryAnalyzer.ini文件
Windows/Linux中该文件就在解压缩的目录下
Mac中该文件在mat.app/Contents/Eclipse

-startup
../Eclipse/plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar
--launcher.library
../Eclipse/plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.700.v20180518-1200
-vmargs
-Xmx4g
-Dorg.eclipse.swt.internal.carbon.smallFonts
-XstartOnFirstThread

修改-Xmx的值即可

/ 2 / Mat功能介绍

2 . 1 Overview

Dump文件信息, 使用饼状图的方式来展示内存占用的信息

  • Details是文件信息详情, 包含了文件大小、字节码文件大小、对象文件大小、类加载器数量
  • Actions是常用的操作汇总, 与左上角的菜单功能相同

2 . 2 Histogram

Histogram汇总了使用到的类的对象数量以及堆占用空间
dump文件分析工具有哪些_如何解析xml文件
我们还可以根据实际情况对Histogram展示的数据进行分类
dump文件分析工具有哪些_如何解析xml文件
在结果的第二行<Regex>中我们可以进行模糊查询

2 . 3 Dominator_Tree

Dominator_Tree汇总了堆内存空间中占比最大的对象, 按照空间大小排序, 我们可以通点击左边的箭头符号查看当前对象的引用状况, 最右侧为当前对象所占空间比例
dump文件分析工具有哪些_如何解析xml文件

2 . 4 OQL

OQL是Object Query Language的简写,即对象查询语言, 语法与SQL类似, 点击上方的红色感叹号开始执行
dump文件分析工具有哪些_如何解析xml文件

2 . 5 Thread_Overview

线程视图, 汇总了Dump文件中所有线程的信息, 按照线程所占用的空间进行排序

2 . 6 Leak Suspects

内存泄漏疑点, 这是Mat根据Dump文件的分析结果得到最有可能导致OOM的疑点, 也是我在使用Mat工具时第一个打开的工具
dump文件分析工具有哪些_如何解析xml文件
点击Details查看详细分析信息

2 . 7 Path to GC Roots & Merge Shortest Paths to GC Roots

研究这俩个工具之前我们需要先了解一下GC对不同引用关系之间的区别

2 . 7 . 1 GC对不同引用关系之间的区别
  • 虚引用(PhantomReference)

    虚引用无法决定一个对象的生命周期, 因为持有虚引用的对象和没有引用一样, 随时都会被GC回收, 且虚引用的使用必须搭配引用队列一起使用PhantomReference

  • 弱引用(WeakReference)

    与虚引用相比拥有短暂的生命周期, 长短则取决于GC什么时候回发现它, 需要搭配WeakReference来使用

  • 软引用(SoftReference)

    与弱引用相比, 软引用的生命周期长短取决于堆内存是否充足, 如果堆内存已经满了, 那么GC就会回收软引用对象

  • 强引用(StrongReference)

    我们平常创建对象时都是创建的强引用对象, 不论堆内存是否充足, 只要该对象还存在引用关系GC就不会回收, 这也是OOM异常的触发原因

2 . 7 . 2 Path to GC Roots

当前对象到GC Root的路径, 也就是当前对象的引用关系, 该工具只能展示单个对象的引用关系, 所以只能在Dominator_Tree中使用

2 . 7 . 3 Merge Shortest Paths to GC Roots

一组对象到GC Root的最短路径, 效果与Path to GC Roots相同, 可以在Histogram中使用
dump文件分析工具有哪些_如何解析xml文件
选择一条数据点击右键并选择Path To GC Roots, 选择展示结果排除需引用、弱引用、软引用, 我们只需要看强引用即可
dump文件分析工具有哪些_如何解析xml文件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186570.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 【10】进大厂必须掌握的面试题-版本控制面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 Q1。什么是版本控制? 这可能是您在面试中最容易遇到的问题。我的建议是首先给出版本控制的定义。它是一个记录一段时间内…

  • 浅析@MapperScan原理[通俗易懂]

    浅析@MapperScan原理[通俗易懂]@MapperScan是spring用于批量注入mybatis映射器(DAO接口)的注解。与之相对应@Mapper进行单个注册。源码如下:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(MapperScannerRegistrar.class)@Repeatable(MapperScans.class)public@interfaceMapperScan{//指定

  • Flume学习笔记「建议收藏」

    Flume学习笔记「建议收藏」Flume学习笔记Flume定义Flume基础架构Flume安装部署监控端口数据实时监控单个追加文件实时监控目录下多个新文件Flume定义Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单.Flume最主要的作用就是:实时读取服务器本地磁盘的数据,将数据写入到HDFS.Flume基础架构AgentAgent是一个JVM进程,它以事件的形式将数据从源头送至目的。Agent主要有3个部

  • 三维重建技术概述_CT三维重建不包括

    三维重建技术概述_CT三维重建不包括基于视觉的三维重建,指的是通过摄像机获取场景物体的数据图像,并对此图像进行分析处理,再结合计算机视觉知识推导出现实环境中物体的三维信息。1.相关概念(1)彩色图像与深度图像彩色图像也叫作RGB图像,R、G、B三个分量对应于红、绿、蓝三个通道的颜色,它们的叠加组成了图像像素的不同灰度级。RGB颜色空间是构成多彩现实世界的基础。深度图像又被称为距离图像,与灰度图像中像素点存储亮度值不同,其像素点存储的

    2022年10月31日
  • 本以为java语言很难学,其实就学完下面这些知识,就能理解了

    本以为java语言很难学,其实就学完下面这些知识,就能理解了刚毕业,找工作,很多人都面临相同的问题。自己能做什么?什么工作既舒服,福利又好(不存在的,除非银行你家开的)。然后社会是个发展的社会,现代人的生活越来越智能,生活中其实充满“技术”!!!所以,在各个岗位中,其实编程类的岗位工资是平均水平最高的。可以加你Java资料分享群java《学习》+交流523401738作为5大编程语言的JAVA是当今最受各大公司的青睐,很多项目,很多工程都需要用到java…

  • postman 导出python爬虫代码

    postman 导出python爬虫代码postman导出python爬虫代码importrequestsurl=”https://www.baidu.com/”payload={}headers={‘Connection’:’keep-alive’,’Cache-Control’:’max-age=0′,’sec-ch-ua’:'”GoogleChrome”;v=”95″,”Chromium”;v=”95″,”;NotABrand”;v=”99″‘,’sec-ch-ua-mobil

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号