JVM 内存分析神器 MAT: Incoming Vs Outgoing References 你真的了解吗?
点击上方蓝色字体,选择“设为星标”
优质文章,及时送达
了解 Eclipse MAT 中 incoming and outgoing 引用之间的区别。
Eclipse MAT(内存分析器工具)是分析 JVM 堆 Dump 文件的强大工具。它具有几个非常有效分析内存问题的强大功能。“Incoming references”和“Outgoing references”就是其中一种功能。在本文中,我们来探讨 Incoming references 和 Outgoing references 以及它们之间的区别。在 Eclipse MAT 中,当右键单击任何对象时,将看到下拉菜单。如果选择“ListObjects”菜单项,则会注意到两个选项:
with outgoing references
with incoming references
通过示例理解知识会更容易,咱们来看看这样一个例子。让我们通过示例来了解有关 Incoming references 和 Outgoing references 的更多知识。例如,一个应用程序的源代码如下所示:
public class A {private C c1 = C.getInstance();
}
public class B {private C c2 = C.getInstance();
}
public class C {private static C myC = new C();public static C getInstance() {return myC;}private D d1 = new D();private E e1 = new E();
}
public class D {
}
public class E {
}
public class SimpleExample {public static void main (String argsp[]) throws Exception {A a = new A();B b = new B();}
}
现在,如果要为上述示例应用程序以图形方式绘制对象,则其外观将如下所示:图 1:示例应用程序的对象引用图
对象 A 和对象 B 持有对象 C 的引用
对象 C 持有对象 D 和对象 E 的引用
在这个示例项目中,让我们具体分析下对象 C 的 Incoming references 和 Outgoing references 。
对象 C 的 Incoming References
拥有对象 C 的引用的所有对象都称为 Incoming references。在此示例中,对象 C 的“Incoming references”是对象 A、对象 B 和 C 的类对象 。
为了证实这个判断,我们从上述示例应用程序中捕获了堆 Dump 文件,并将其载入到 Eclipse MAT 中进行分析。下图是 Eclipse MAT 针对对象 C 报告的 Incoming references
图 2:对象 C 的 Incoming references
在"Dominator Tree"中的 Object C 上单击鼠标右键,然后选择"List Objects",再选择 ”with incoming references“时,Eclipse MAT 会生成上图的报告。报告中展示对象 C 的 Incoming references 为对象 A、对象 B 和 C 的类对象。Eclipse MAT 还显示了用于引用对象 C 的变量,可以看到使用变量“c1”引用对象 C 的对象 A,类似地,还报告了用于引用对象 C 的其他变量。
对象 C 的 Outgoing References
对象 C 引用的所有对象都称为 Outgoing References。在此示例中,对象 C 的“outgoing references”是对象 D、对象 E 和 C 的类对象。以下是 Eclipse MAT 针对对象 C Outgoing references 的报告
图 3:对象 C 的 Outgoing references
在"Dominator Tree"中的 Object C 上单击鼠标右键,然后选择"List Objects",再选择 ”with incoming references“时,Eclipse MAT 会生成上图的报告。报告中展示对象 C 的 Incoming references 为对象 D、对象 E 和 C 的类对象。Eclipse MAT 还按显示对象 C 引用的其他对象。可以看到对象 C 使用变量 d1 引用了对象 D。类似地,报告还显示了对象 C 中使用的其他变量。
通过本文主要阐述了 Incoming references and Outgoing references 之间的区别。
原文:https://dzone.com/articles/eclipse-mat-incoming-outgoing-references
近期热文
JVM 源码解读之 CMS GC 触发条件
如何减少长时间的 GC 停顿?
简单的 HTTP 调用,为什么时延这么大?
服务刚启动就 Old GC,要闹哪样?
喜欢本文的朋友们,欢迎长按下图关注订阅号涤生的博客,收看更多精彩内容
JVM 内存分析神器 MAT: Incoming Vs Outgoing References 你真的了解吗?相关推荐
- JVM 内存分析工具 - MAT
文章目录 1 简介 2 使用 2.1 准备 MAT 2.2 准备堆转储文件(Heap Dump) 2.3 分析堆转储文件 2.3.1 Histogram 2.3.2 Leak Suspects 2.3 ...
- mat 内存分析 Linux,JVM内存分析工具MAT使用简介
# Memory Analyzer使用简介 markdown格式渲染异常请阅读附件. - [Memory Analyzer使用简介](#memory-analyzer使用简介) - [MAT 简介]( ...
- envi 文件 生成mat_JVM 内存分析工具 MAT 的深度讲解与实践——入门篇
1. MAT 工具简介 MAT(全名:Memory Analyzer Tool),是一款快速便捷且功能强大丰富的 JVM 堆内存离线分析工具.其通过展现 JVM 异常时所记录的运行时堆转储快照(Hea ...
- Java内存分析工具MAT(Memory Analyzer Tool)的介绍与使用
详细介绍了Java内存分析工具MAT(Memory Analyzer Tool)的常见使用方法,MAT可以帮助Java程序员快速进行内存分析,定位问题. MAT(Memory Analyzer Too ...
- 内存分析工具MAT的使用
原文链接:http://www.jianshu.com/p/d8e247b1e7b2 MAT简介 MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速. ...
- 内存分析工具 MAT 详解
Mat的作用 MAT是Memory Analyzer tool的缩写,是一种快速,功能丰富的Java堆分析工具,能帮助你查找内存泄漏和减少内存消耗.很多情况下,我们需要处理测试提供的hprof文件,分 ...
- 内存分析工具MAT分析内存溢出问题
MAT下载安装: 1.在eclipse中安装插件 2.下载独立MAT:下载地址:http://www.eclipse.org/mat/downloads.php MAT分析的是hprof文件,hpr ...
- Java JVM内存分析
2019独角兽企业重金招聘Python工程师标准>>> JVM常见参数及溢出分析工具和方法 JDK1.6.45常用基本参数 -server 服务模式启动 -verbose:gc 开 ...
- 内存分析工具MAT介绍
MAT(Memory Analyzer Tool)是一个基于Eclipse的内存分析工具,是一个快速.功能丰富的java heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗. 官网地址:htt ...
最新文章
- python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
- ComponentOne WebChart for ASP.NET基础
- Hyperledger Fabric Rest API服务开发教程【含源码】
- 【转】 ABAP中的异常处理 - TRY CATCH的使用实例
- java 数组中差值最大数对,[算法题] 求数组有序后相邻元素之间的最大差值
- P3279-[SCOI2013]密码【Manacher】
- java 比较源文件_Beyond Compare比较Java源代码文件的操作流程
- TYUT-A2专题题解
- 第六步_安装SSH服务
- 【译】RabbitMQ:Topics
- 001_动力节点_SpringMVC4_SpringMVC简介
- 《统计学》第八版贾俊平第十一章一元线性回归知识点总结及课后习题答案
- Origin多峰拟合
- 全球十大黑客(第一让你不敢想象)
- 【转】MMORPG开发入门【强力推荐,写的很好】
- 学科前沿讲座课程总结与感悟
- django学习笔记(六)-----模型
- Go语言核心之美 3.3-Map
- 5.3.1 Unique Binary Sear Trees
- ios airplay mirroring镜像
热门文章
- hadoop2.3.0 Windows (nutch)爬虫使用
- office365服务器没有响应,修复:由于长时间运行的脚本,Office 365没有响应
- 利元转债,奕瑞转债上市价格预测
- xdoj-87-跳一跳
- 怎么抓雷电模拟器的包_fiddler+雷电模拟器进行APP抓包(可抓HTTPS)
- cadence修改板框倒角_Allegro实操技巧:如何对矩形板框进行倒角设置?
- github 思维导图开元软件_哪款思维导图软件比较好用?
- 完整的渗透测试靶场通关
- 用友NC65“该产品的用户数已达到产品授权数”的伪故障
- Java-龙与地下城怪物设计