当前位置: 首页 > news >正文

Eclipse MAT解析headp dump,total size小于file size

1. 问题描述

  • 使用Eclipse MAT分析20GB+的heap dump文件
    在这里插入图片描述

  • 最后解析出来dump size只有1GB+
    在这里插入图片描述

2. 原因:heap dump中包含许多unreachable objects

  • Eclipse MAT的官方文档,《Basic Tutorial》章节,有对上图的Overview page做介绍

  • 针对total size小于file size的情况,有专门说明:

    If the total size of the dump is much smaller than the size of the file it is possible that the heap dump contained many ‘garbage’ objects which would be discarded at the next garbage collection. See the unreachable objects query to examine these ‘garbage’ objects.

  • 翻译过来就是:

    • heap dump包含许多垃圾对象,这些对象在下一次GC时可以回收,
    • 一般情况下,这些对象对于分析内存泄露来说是不重要的,MAT会在解析heap dump的过程中删除这些对象
  • MAT对unreachable objects出现原因的分析:

    • 如果heap dump是因为OOM产生的,JVM通常会进行GC操作以试图为新对象释放空间,这时heap dump文件中将不会包含unreachable objects
    • 如果并未执行GC操作,heap dump文件中就可能存在unreachable objects。
      • 例如,需要分配的空间非常大,即使进行GC操作也无法满足需求
      • 或者由于其他事件触发了heap dump(上述heap dump文件就是笔者通过jmap命令获得)
        jmap -dump:format=b,file=file_name <pid>
        

3. 如何查看unreachable objects?

3.1 方法1:基于已有的解析,直接查看

3.1.1 Overview页面的link查看

  • 在Overview页面,通过 Unreachable Objects Histogram链接点击查看
  • 进入以后可以看到,unreachable objects有19GB左右,加上之前的1.4GB,与整个heap dump文件的大小是一致的
    在这里插入图片描述

3.1.2 通过 Query Browser 查看

  • 通过工具栏,Query Browser → \rightarrow Java Basics → \rightarrow Unreachable Objects Histogram,查看unreachable objects
    在这里插入图片描述

3.2 重新分析heap dump

  • 清理缓存:Window → \rightarrow Heap Dump History → \rightarrow 找到对应的heap dump文件 → \rightarrow 右键,Delete Index Files
    在这里插入图片描述
  • 允许MAT保留unreachable objects:Window → \rightarrow Preferences → \rightarrow Memory Analyzer → \rightarrow 勾选'Keep unreachable objects' → \rightarrow Apply and Close
    在这里插入图片描述
  • 重新打开heap dump文件,这次MAT将不会丢弃unreachable objects
    在这里插入图片描述
http://www.lryc.cn/news/183946.html

相关文章:

  • 【数据挖掘】2022年 Quiz 1-3 整理 带答案
  • AcWing 288. 休息时间,《算法竞赛进阶指南》,环形与后效性处理
  • 一文掌握Linux系统信息查看命令(CPU、内存、进程、网口、磁盘、硬件)
  • UE5.1编辑器拓展【三、脚本化资产行为,删除无引用资产】
  • 防抖和节流的实现
  • alsa pcm接口之阻塞和非阻塞打开和异步通知模式
  • Python Random模块详解
  • Vue3 模糊搜索筛选
  • 【MVC】C# MVC基础知识点、原理以及容器和管道
  • 【kubernetes】基于prometheus的监控
  • Gmail 将停止支持基本 HTML 视图
  • 电影大师杂记
  • 聊聊分布式架构——RPC通信原理
  • Android:实现手机前后摄像头预览同开
  • 2.2.4 yocto poky openembedded bitbake关系
  • 开源后台管理系统 (go-vue-admin)
  • 想升级macOS Big Sur,但是MacBook内存空间不够该怎么办?
  • 结构化面试 --- 介绍 + 人际关系
  • 李沐深度学习记录5:13.Dropout
  • 计算机竞赛 题目:基于大数据的用户画像分析系统 数据分析 开题
  • MFC ExtTextOut函数学习
  • Java中阻塞队列原理、特点、适用场景
  • PHP之linux、apache和nginx与安全优化面试题
  • 算法笔记:0-1背包问题
  • C++入门-day02
  • 模板方法模式,基于继承实现的简单的设计模式(设计模式与开发实践 P11)
  • php实战案例记录(16)php://input输入流
  • cad图纸如何防止盗图(一个的制造设计型企业如何保护设计图纸文件)
  • Windows11 安全中心页面不可用问题(无法打开病毒和威胁防护)解决方案汇总(图文介绍版)
  • 1329: 【C2】【排序】奖学金