点击上方蓝色字体,选择“设为星标”

优质文章,及时送达

了解 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 你真的了解吗?相关推荐

  1. JVM 内存分析工具 - MAT

    文章目录 1 简介 2 使用 2.1 准备 MAT 2.2 准备堆转储文件(Heap Dump) 2.3 分析堆转储文件 2.3.1 Histogram 2.3.2 Leak Suspects 2.3 ...

  2. mat 内存分析 Linux,JVM内存分析工具MAT使用简介

    # Memory Analyzer使用简介 markdown格式渲染异常请阅读附件. - [Memory Analyzer使用简介](#memory-analyzer使用简介) - [MAT 简介]( ...

  3. envi 文件 生成mat_JVM 内存分析工具 MAT 的深度讲解与实践——入门篇

    1. MAT 工具简介 MAT(全名:Memory Analyzer Tool),是一款快速便捷且功能强大丰富的 JVM 堆内存离线分析工具.其通过展现 JVM 异常时所记录的运行时堆转储快照(Hea ...

  4. Java内存分析工具MAT(Memory Analyzer Tool)的介绍与使用

    详细介绍了Java内存分析工具MAT(Memory Analyzer Tool)的常见使用方法,MAT可以帮助Java程序员快速进行内存分析,定位问题. MAT(Memory Analyzer Too ...

  5. 内存分析工具MAT的使用

    原文链接:http://www.jianshu.com/p/d8e247b1e7b2 MAT简介 MAT(Memory Analyzer Tool),一个基于Eclipse的内存分析工具,是一个快速. ...

  6. 内存分析工具 MAT 详解

    Mat的作用 MAT是Memory Analyzer tool的缩写,是一种快速,功能丰富的Java堆分析工具,能帮助你查找内存泄漏和减少内存消耗.很多情况下,我们需要处理测试提供的hprof文件,分 ...

  7. 内存分析工具MAT分析内存溢出问题

    MAT下载安装: 1.在eclipse中安装插件  2.下载独立MAT:下载地址:http://www.eclipse.org/mat/downloads.php MAT分析的是hprof文件,hpr ...

  8. Java JVM内存分析

    2019独角兽企业重金招聘Python工程师标准>>> JVM常见参数及溢出分析工具和方法 JDK1.6.45常用基本参数 -server 服务模式启动  -verbose:gc 开 ...

  9. 内存分析工具MAT介绍

    MAT(Memory Analyzer Tool)是一个基于Eclipse的内存分析工具,是一个快速.功能丰富的java heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗. 官网地址:htt ...

最新文章

  1. python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
  2. ComponentOne WebChart for ASP.NET基础
  3. Hyperledger Fabric Rest API服务开发教程【含源码】
  4. 【转】 ABAP中的异常处理 - TRY CATCH的使用实例
  5. java 数组中差值最大数对,[算法题] 求数组有序后相邻元素之间的最大差值
  6. P3279-[SCOI2013]密码【Manacher】
  7. java 比较源文件_Beyond Compare比较Java源代码文件的操作流程
  8. TYUT-A2专题题解
  9. 第六步_安装SSH服务
  10. 【译】RabbitMQ:Topics
  11. 001_动力节点_SpringMVC4_SpringMVC简介
  12. 《统计学》第八版贾俊平第十一章一元线性回归知识点总结及课后习题答案
  13. Origin多峰拟合
  14. 全球十大黑客(第一让你不敢想象)
  15. 【转】MMORPG开发入门【强力推荐,写的很好】
  16. 学科前沿讲座课程总结与感悟
  17. django学习笔记(六)-----模型
  18. Go语言核心之美 3.3-Map
  19. 5.3.1 Unique Binary Sear Trees
  20. ios airplay mirroring镜像

热门文章

  1. hadoop2.3.0 Windows (nutch)爬虫使用
  2. office365服务器没有响应,修复:由于长时间运行的脚本,Office 365没有响应
  3. 利元转债,奕瑞转债上市价格预测
  4. xdoj-87-跳一跳
  5. 怎么抓雷电模拟器的包_fiddler+雷电模拟器进行APP抓包(可抓HTTPS)
  6. cadence修改板框倒角_Allegro实操技巧:如何对矩形板框进行倒角设置?
  7. github 思维导图开元软件_哪款思维导图软件比较好用?
  8. 完整的渗透测试靶场通关
  9. 用友NC65“该产品的用户数已达到产品授权数”的伪故障
  10. Java-龙与地下城怪物设计