使用 MAT 进行 Java 内存分析

ops/2024/11/15 0:46:20/

MAT(Memory Analyzer Tool) 分析经验笔记

1. 获取 .hprof 文件
  • 自动生成: 当应用遇到 OutOfMemoryError 时,如果 JVM 启用了 -XX:+HeapDumpOnOutOfMemoryError 参数,则会在错误发生时自动生成 .hprof 文件。
  • 手动生成: 可以通过 jmap 命令或者通过 JVM 参数 -XX:+HeapDumpBeforeFullGC-XX:HeapDumpPath=<path> 来手动生成 .hprof 文件。
  • 注意事项: 确保 .hprof 文件完整下载并保存在本地磁盘上。
2. 导入 .hprof 文件
  • 打开 MAT: 启动 Memory Analyzer Tool。
  • 导入文件: 使用 File > Open Heap Dump 选项选择要分析的 .hprof 文件。
  • 等待加载: MAT 加载 .hprof 文件可能需要一段时间,具体取决于文件的大小。
3. 基本检查
  • 概览视图: 使用 Overview 视图检查基本的内存使用情况,如存活对象的数量和大小、内存分配等。
  • 堆利用率: 检查 Heap Usage 图表中的总体趋势,了解内存使用情况的变化。
  • 内存泄漏: 使用 Leak Suspects Report 来寻找潜在的内存泄漏。
4. 查找大对象
  • 大对象视图: 使用 Large Object Heap 视图来查看占用空间最大的对象。
  • 筛选条件: 应用过滤器来查找特定类型的大对象。
  • 对象详情: 单击对象来查看其详细信息,如对象大小、类名等。
5. 分析引用链
  • Dominator Tree: 使用 Dominator Tree 视图来查找对象之间的引用关系,这有助于理解哪些对象保持了其他对象的引用。
  • 路径查找: 选择一个对象后,点击 “Find Path to GC Roots” 来查看从该对象到 GC Roots 的引用路径。
6. 定位代码位置
  • 源代码映射: 确保在 MAT 中正确设置了源代码路径,以便可以追溯到具体的代码行。
  • 类和方法: 使用类名和方法名来查找可能的问题代码。
  • 堆栈跟踪: 查看对象创建时的堆栈跟踪信息,了解对象是如何被创建的。
7. 优化建议
  • 减少内存消耗: 识别并移除不必要的对象引用。
  • 代码重构: 对于发现的问题代码进行重构,减少内存消耗。
  • 调整配置: 如果可能,考虑调整 JVM 配置来改善内存管理。
8. 报告与分享
  • 导出报告: 使用 Export Report 功能来保存分析结果。
  • 分享结果: 与其他团队成员共享分析结果,共同解决问题。

http://www.ppmy.cn/ops/95816.html

相关文章

MySQL 复制建表、操作补充、pymysql操作—/—<10>

一、复制建表 1、复制其他表的结构 只复制结构&#xff0c;不复制值 CREATE TABLE aaa LIKE student student表&#xff1a; 复制完的a表&#xff1a; 2、复制查询结果并建表: create table a (select id,sum(score) as sum_sco from score group by id) score表结构如图所…

python爬取豆瓣电影数据

目录 一、背景 二、分析网站 1、ajax请求 三、代码实现 1、导包 2、面向对象实现 3、发送请求 4、解析数据 5、保存数据 6、定义主函数 7、实例化对象运行主函数 8、运行效果 四、以下是全部完整代码 五、报错解决 1、数据库连接报错 2、数据插入报错 一、背景…

华为手机ip地址怎么换:更换指南,轻松操作

在数字化时代&#xff0c;智能手机已成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;手机都扮演着至关重要的角色。然而&#xff0c;随着网络环境的日益复杂&#xff0c;保护个人隐私和网络安全变得尤为重要。更换手机IP地址&#xff0c;作为提升网…

【Vue-video】Video 封装组件-Copy直接用解决封装BUG

前言 这个 Vue 组件是通过组合式API编写的的语法。 大家在使用 video 的时候是不是都在为这个视频资源需要销毁问题烦恼&#xff0c;但你今天不用担心&#xff0c;我来为你解答错误封装的 BUG&#xff0c;直接上源代码。 效果图 代码 请先确保自己已经通过命令安装了 video &…

pywebview 入门

pywebview 入门 文档地址 地址 https://pywebview.flowrl.com/guide/ 一、pywebview 简介 1. 什么是 pywebview&#xff1f; pywebview 是一个轻量级的 python 库&#xff0c;旨在简化桌面应用程序的开发。它利用系统的 WebView 组件&#xff0c;使得开发人员可以使用现代 …

字符串值提取工具-09-java 执行 json 解析, json-path

值提取系列 字符串值提取工具-01-概览 字符串值提取工具-02-java 调用 js 字符串值提取工具-03-java 调用 groovy 字符串值提取工具-04-java 调用 java? Janino 编译工具 字符串值提取工具-05-java 调用 shell 字符串值提取工具-06-java 调用 python 字符串值提取工具-…

XSS DOM破坏实战案例

目录 案例一 思考 源码分析 查找问题 实现 案例二 查看源码 问题查找 实现 实验环境&#xff1a;DOM clobbering | Web Security Academy (portswigger.net) 案例一 里面是一篇篇的博客&#xff0c;点击进去里面是一些评论 思考 尝试一些常规的xss 没什么效果... 他将…

Linux - 基础工具使用

文章目录 一、yum1、介绍2、功能3、语法4、使用 二、rzsz1、安装rzsz的指令2、介绍3、使用 三、vim基础使用1、介绍2、基础使用 四、gcc/g使用1、生成可执行文件过程2、语法3、常用选项4、编译过程5、动静态库6、包含头文件的多文件编译7、链接外部库 一、yum 1、介绍 Linux中…