## 1.MAT工具的下载和安装

MAT(Memory Analyzer Tool)工具是eclipse的一个插件,使用起来非常方便,尤其是在分析 大内存的dump文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用OQL对象查询,以及可以很方便的找出对象GC Roots的相关信息,当然最吸引人的还是能够快速为开发人员生成内存泄露报表,方便定位问题和分析问题。

######2.下载下来后运行:

运行报错:

失望不???经过分析是jdk路径不对?为啥不对呢?jdk在mat文件夹下没有可以配置的地方,那就是走默认的jdk配置,结果没找到,没有命中目标文件jvm.dll。

那只能是jdk位数的问题了,位数不一样,安装后的jdk目录结构就不一样。

解决方法有两个:

1.下载和你jdk位数匹配的mat工具。

2.更换jdk为64位。

后续使用MAT内容持续更新~

######MAT工具详解:

Histogram(直方图)视图:

dominator_tree(支配树)视图:

基础概念:

Shallow Heap 和 Retained Heap

Shallow Heap表示对象本身占用内存的大小,不包含对其他对象的引用,也就是对象头加成员变量(不是成员变量的值)的总和。

Retained Heap是该对象自己的Shallow Heap,并加上从该对象能直接或间接访问到对象的Shallow Heap之和。换句话说,Retained Heap是该对象GC之后所能回收到内存的总和。

今天分析了一个堆dump:

以前用jdk自带的jvisualvm.exe工具:

这个工具有什么问题呢?dump上G了就打不开了,类似hashmap看不到具体内容是哪个class的东西~

java 内存快照怎么看_jvm工具篇-(1)-分析工具MAT使用(内存快照分析)相关推荐

  1. iOS开发工具篇-AppStore统计工具

    http://blog.devtang.com/blog/2013/06/16/ios-dev-tool-app-store-tool/ iOS开发工具篇-AppStore统计工具 JUN 16TH, ...

  2. 【死磕JVM】看完这篇我也会排查JVM内存过高了 就是玩儿!

    前言 CPU 是时分的,操作系统里面有很多线程,每个线程的运行时间由CPU决定,CPU会分给每一个线程一个时间片,时间片是一个很短的时间长度,如果在时间片内,线程一直占有,就是100%,我们应该意识到 ...

  3. 看完这篇,让你不再惧怕内存优化

    对于安卓应用开发来说,内存究竟会遇到什么样的问题,有什么方法可以用来测试和分析,以及有什么样的策略可以去实践优化,今天就来好好聊聊这个话题. ​ 缘起 现代计算机是基于冯*诺依曼架构的,计算机的软件是 ...

  4. 看完这篇还不清楚Netty的内存管理,那我就哭了!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 说明 在学习Netty的时候,ByteBuf随处可见,但是 ...

  5. netty发送数据_看完这篇还不清楚Netty的内存管理,那我就哭了

    说明 在学习Netty的时候,ByteBuf随处可见,但是如何高效分配ByteBuf还是很复杂的,Netty的池化内存分配这块还是比较难的,很多人学习过,看过但是还是云里雾里的,本篇文章就是主要来讲解 ...

  6. java面试题,看我这篇就够了,前端后台应有尽有,包你通过面试

    面试题精华版:https://blog.csdn.net/cencong863251/article/details/88963573 以下为详情版: HTML&CSS部分 1.HTML中定义 ...

  7. instagram营销全攻略,看这一篇就够了(附10个分析工具)

    instagram相信做外贸的小伙伴应该都不陌生, 其实很多外贸人都已经"偷偷"在用instagram开发客户了,不管大家对instagram了解多少,相信看完这篇攻略之后,会对i ...

  8. java与python难度对比_Python和Java的区别,看完这篇文章你就清楚啦

    众所周知,在数不清的编程语言中Java自诞生之日起长盛不衰,可谓是神话般的存在.随着人工智能时代的到来,Python迅速席卷全球,作为当下最热门的编程语言,因其简单实用且应用场景广泛备受青睐. 一个是 ...

  9. java分布式项目,看这一篇就够了!

    三.堆空间 基本描述 JVM启动时创建堆区,是内存管理的核心区,通常情况下也是最大的内存空间,是被所有线程共享的,几乎所有的对象实例都要在堆中分配内存,所以这里也是垃圾回收的重点空间. 堆栈关系 栈是 ...

  10. 学java日志框架,看这一篇就够了!!!

    什么是日志框架 日志框架的选择 Logback的使用与配置 什么是日志框架 是一套能实现日志输出的工具包 能够描述系统运行状态的所有时间都可以算作日志 日志框架的能力 定制输出目标 定制输出格式 携带 ...

最新文章

  1. 八年之痒!除了NLP和CV,人工智能就不能干点别的啥了?
  2. UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答
  3. SQL Server 2008 缩小数据库日志
  4. 淘淘商城 @Autowired 装配失败
  5. 删除排序数组中的重复数字 II
  6. oracle中修改多个字段默认值_利用VBA代码在已有的数据表中删除、添加、修改字段...
  7. 终端启动service和activity
  8. 一个基本的spring+mybatis所需要的包
  9. python项目依赖库打包发布方法
  10. 制作的LINUX安装软件,竟然导致系统无法启动
  11. 【TPshop踩雷篇 — 数据库连接配置失败】
  12. 2021年5大最佳3D动画软件
  13. 华为员工离职心声:菊厂15年退休,感恩公司,让我实现了财务自由!
  14. Windows错误系统配置提权之系统服务权限配置错误 (二)
  15. 从EBI中ENA数据库下载原始数据accession的详细信息以及序列
  16. 计算器和计算机有什么不同,计算机和计算器有区别吗?
  17. Spring配置SessionFactory
  18. 【181029】FreeEIM 飞鸽传书仿QQ即时通讯软件VC++源代码
  19. 深入理解Spark RDD——RDD分区计算器Partitioner
  20. 鼠标左键按钮不起作用? 这是解决方法

热门文章

  1. oracle 删除用户和依赖,Oracle 12.2使用手动创建与注册依赖对象来执行联机重定义...
  2. compile函数 java_正则表达式--关于Java中Pattern.compile函数的相关解释
  3. Java SimpleDateFormat格式化时间不准确
  4. Futter基础第21篇: 实现普通对话框、列表对话框、单选对话框、Toast提示
  5. Vue2.0组织浏览器返回事件
  6. bzoj 2152 聪聪可可
  7. Android文字的复制和粘贴
  8. 修改系统启动项 grub2配置的方法 ubuntu[转]
  9. QGroundControl源码编译安装
  10. Linux基础命令及其常识