Eclipse Memory Analyzer

下载独立安装版 Eclipse Memory Analyzerhttps://www.eclipse.org/mat/

写了些啥?

Eclipse Memory Analyzer 的介绍和使用说明.基本上是帮助文档的中文翻译版本

什么是 Heap Dump ?

Heap dump 的中文名称是 堆转储.

堆转储是Java进程在某个时间点的内存快照。持久化此数据有不同的格式,根据格式的不同,它可能包含不同的信息片段,但通常快照包含关于触发快照时堆中的java对象和类的信息。通常,在写堆转储之前会触发一个完整的GC,因此它包含关于剩余对象的信息。

可以在堆转储中找到的典型信息(取决于堆转储类型)是:

所有对象

类、字段、原始值和引用

所有类

类加载器,名称,超类,静态字段

垃圾收集根

被定义为JVM可以访问的对象

线程堆栈和本地变量

快照时刻的线程调用堆栈,以及关于本地对象的每帧信息

浅堆与保留堆(shallow vs Retained Heap)

浅堆是一个对象自身消耗的内存。一个对象每个引用需要32位或64位(取决于OS体系结构),Integer 4个字节,Long 8个字节等。根据堆转储格式,可以调整大小(例如,对齐到8字节等等),以更好地模拟VM的实际消耗。

Retained Set of X是当X被垃圾收集时由GC移除的对象集。

Retained heap of X 是Retained Set 中所有对象的浅堆大小的总和,即由X持有的存活内存。

一般来说,对象的shallow heap是其在堆中的大小,并且同一对象的retained size是当对象被垃圾收集时将释放的堆内存量。

一组对象的Retained Set (包括这些对象以及只能通过这些对象访问的所有其他对象) 的大小是包含在集合中的所有对象的总堆大小。
在这里插入图片描述

在这里插入图片描述

例如上图的堆转储文件的 domainator_tree 图 . ArrayList 持有 两个 byte[] 的数组.

代码形式为 Lis

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值