您好,欢迎光临本网站![请登录][注册会员]  
文件名称: mat分析中文文档
  所属分类: Java
  开发工具:
  文件大小: 3mb
  下载次数: 0
  上传时间: 2019-07-06
  提 供 者: qq_36******
 详细说明:MemoryAnalyzer 使用中文 文档Me mory an a lyzer使用文档 2. Shallow or retained heap Shallow Heap表小一个对象消费的内存的总量。对象的每个引用变量会占用32或64bit(取决于操作系 统),每个 nteger需要占用4byte,每个Long需要占用8byte,诸如此关的其他信息可以自行查询。Sha|low heap的值可能是经过了调整的(比如对齐到8,具体取决于 Heap dump文件的柊式),以便更好地模拟虚拟 机的真实消费情况。 对象ⅹ的 Retained set指的是一旦X被垃圾回收后也会随之被GC回收掉的对象的集合。 对象Ⅹ的 retained heap指的是X的 retained set中所有对象的 shallow heap之和,或者说是因为对象Ⅹ 而保持ave的内存的大小。 通常来说, shallow heap就是对象自身在堆内存中的大小,而同个对象的 retained heap指的是该对象 被垃圾回收后释放的堆内存的大小 组 leading对象的 retained set(如一个特定类的全部对象、一个特定类加载器加载的所有类的全部对 象、又或者一串仟意的对象)在 leading对象集合中的对象全部不可达时被释放掉。 Leading对象集的 retained set包括这些对象本身和其他的只能通过这些对象访问到的对象。而 leading对象集合的 retained size指的就 是 retained set中的全部对象的堆内存之和。如下图 6A和B是 GC Roots,比如方法参数,局部 对象,用在wait(、 notify(和 synchronized(方法上的对象等等 E Leading Set Retained Set EC C D.E. FG.H AB A.B.C. D.E. F.G. H A Minimum retained size提供了一种很好的佔算 retained size的方案。这种方案的计算速度远比获取精确 的 retained size快得多。因为这和计算方式只依赖于要查看的集合中的对象的数量,而非 Heap dump中对 象的数量。 致一思维翻译整理 zhe a. com Me mory an a lyzer使用文档 3. Dominator tree Memory analyzer提供∫一个 dominator tree(支配树)的概念来描述对象关系图。将对象引用图转为 dominator tree可以使你很容易地找到占用内存最大的一块以及对象之间的依赖关系。如下是对 dominator tree的一些正式定义: 如果说对象X支配( dominate)了对象Y,那么在对象关系图中,从起始节点(或者说是根节点)到 Y的每一条路径都必须经过X。 对象Y的直接支配者{ mmediate dominator)X是距离对象Y最近的一个支配者。 Dominator tree基于对象关系图构建。在 Dominator tree中,每个对象都是它的子节点的直接支配者, 所以对象间的依赖关系很容易确认 Dominator tree有如下几个重要的特征: Ⅹ的子树中的对象(也就是由ⅹ支配的对象)代表了X的 retained set; 如果ⅹ是y的直接支配者,那么ⅹ的直接支配者同样支配着y,以此类推 Dominator tree的边并不直接对应着对象引用图中的对象引用关系 下图是一张对象引用关系图与 dominator tree的对照图: EH E ABC 4. Garbage Collection roots 个 garbage collection root(简称 GCRoot)就是一个可以从堆内存以外访问的对象。以下原因一个对 象成为 GCRoot: 致一思维翻译整理 zhe a. com Me mory an a lyzer使用文档 System Class 由引导类加载器( bootstrap classloader)或系统类加载器( system classloader)加载的类。比如由rt」jar 加载的全部类,如java.uti.* UNI loca|(局部N对象) native代码编写的局部交量,比如用户自定义的N|代码或者ⅣM内部代码。 JNG|oba(全局N对象) native代码编写的全局变量,比如用户自定义的JN代码或者』M内部代码。 Thread block 当前活跃的 thread block中引用的对象。 Thread 乜经启动的,仍未终止的线程。 Busy monitor(活跃的监控器) 所有调用了wait0、 notify(或者进入同步的对象或类(静态方法指的是类,非静态方法时是对象)。举例 说如调用了 synchronized( Object)或者进入了一个同步的方法。 」 ava loca 局部变量。指的是仍在线程栈中的方法的输入参数或者创建的局部对象变量 致一思维翻译整理 zhe a. com Me mory an a lyzer使用文档 Native stack native代码中的输入输岀参数,如用户自定义的」N代码,或者MM内置代码。通常是在这样的情况 下:一个方法中有 native代码参与,作为这个方法的参数的对象就成了 G CRoot。比如说用在文件操作或者 网络传输中的O方法的参数、或者用在反射中的参数。 Finalizable 进入等待队列,等待自己的 Finalizer执行的对象 Unfinalized 个有 fina lize方法的对象,但是尚未被 finalize也没有进入等待执行 fina lize的队列时 Unreachable 其他 GCRoot皆不可达的对象,但是也不会被MAT标记为 GCRoot。这种对象不会被纳入分析的范围 Java stack frame(Java栈帧) Stack frame(堆栈帧)是一个为函数保留的区域,用来存储关于参数、局部变量和返回地址的信息。只 有在解析dump文件时将之视为一个对象来处理,才会认为其是一个 GCRoot Unknown 未知类型的rot对象。一些dump文件,如1 BM Portable Heap dump文件,其中并不包含root信息。 MAT在解析这一类文件时,如果发现某些对象不存在任何引用信息或者对任何 G CRoot均不可达,那么这些 对象就公被认为是未知类型的 G CRoot。这样可以保证 G CRoot持有dump中的所有对象信息。 5.Incomming outgoing Reference 简言之, Incomming reference指的是引用当前对象的外部对象: Outgoing Reference指的是当前对象引 致一思维翻译整理 zhe a. com Me mory an a lyzer使用文档 用的外部对象。 对象的 incomming reference保证对象处于aive从而免于被垃圾回收掉。 Outgoing reference则展示了对象的具体内容,有助于我们发现对象的用处。 基础教程 这里的基础教程可以用来作为熟悉 Eclipse Memory analyzer的一个出发点。 第一步:获取 Heap dump文件 Memory analyzer主要基于 Heap dump文件上作。 Heap dump文件中包含了在某个指定时间点上所有 ive状态的java对象的信息。现在所有Java虚拟机都有写 Heap dump文件的功能,但是具体的步骤随着提 供商、版木以及操作系统的不同而有些差别。 在这个教程中会尝试使用 windows下的jav8和 jconsole来下载 Heap dump文件。使用jva8启动一个 应用,打开< AVA HOME>/bin/ jconsole. exe,在 jconsole中选择正在运行的应用 图 JConsole:新建连接 N新建连接 O本地程L): PD sun. ools jconsole JConsole 358 注.将对近程启用管逆代逆: O远程进程(r) 用法:( hostnamE》:〈pxt)或 =EVICE:jmx:< OroNocO1):〈sBp》 用户名() 口令(P 连接 取消 (在这个例子中选择的是 eclipse,虽然进程名称为空,但是通过重启 eclipse可以确认)。 建立连接后,选择页签 MBean,执行 com. sun. management. Hot spot Diagnostic下的操作 dumpHeap。 致一思维翻译整理 zhe a. com Me mory an a lyzer使用文档 第一个参数p0是要获取的dump文件的完整路径名,记得文件要以 hprof作为扩展名(要在 Memory Analysis Perspective下打丌扩展名必须是这个)。如果我们只想获取ive的对象,第二个参数p1需要保持为 true。 图Java监视和管理控制台-pid:3292 图连授窗口M帮助山 x 览内存线程类Ⅷ要ian fementation 操作调用 com. sun. management void dumpHeap po base hpr of, p1 trul) 像 HotSpotDlagmostic 属性 MBeanOperationInfo 日操作 :.-dumpHe 名称 值 操作 setvmoption 名称 dumpHeap aa.⊥ang 说明 dumpheap 是细向 java util. logging Return d lang Stri 名称 值 操作: opentype liav ax. management, openrbe an. SimpleType (na.// AlT d ljavex. management. openrbean SimpleType(na. originally Bva.⊥ang 11 openType lava menagement. opsrurbe an Simpl Typs(na. 0r1g1n81ype 个乳n粤跟Hmn1H墨 佴牛人hmr 建议将导出的dump文件保存到一个独立的文件夹,在接下来的分析中会通过这个文件创建很多图表 文件。 第二步:0 overview(概览) 在 eclipse上通过Fle→> Open File来打开dump文件,之后会直接进入 Overview页。当然也可以打开 Memory analysisPerspective,这个通常需要于动调整下 致一思维翻译整理 zhe a. com Me mory an a lyzer使用文档 ch Project Run Window Help Q:95 New Window Editor Hide toolbar Show view Perspective Open Perspective Other Navigation Customize Perspective Preferences Save Perspective As Reset Perspective Close ective Close All Perspectives marchy value 之后在弹出框中选择 Memory analysis即可 Open Perspective E*Database Debug tO Database Development t= Debug G Git 思 Jv吾 最 Java Browsing H Java EE (default) JAva Type Hierarchy JavaScript 仲JA Mer Analysis Planning t Plug-in Development EE Remote System Explorer EResource OK Cancel 在 MemoryAnalysis Perspective下还可以使用File-> Open Heap dump打开dump文件。在 Memory Ana lysis Perspective下 Overview是这样子的: 致一思维翻译整理 zhe a. com Me mory an a lyzer使用文档 File Edit NEvigate Search Project Run Window Help 人图| 0107638 im阳· 日 urget ipse duin entalcur i Overview eclipse. j=t intemal coresearch. it Q, crg ecipse,#: intemal ccra. search. processing JobM. Sizc: 64.6 MB Casses: 19k Objects: 1.5m Class Loadcr:416 Unreachable Obiscts Histogram 1a crg ccipsc osgiirtcrnalload=r. EquinoxclassLpadcr DHU(shal cw size) iD3, 772, GSG(eli rled size) Biggest objects by Retained Size GC root BIsy MonitOr 035.93 tics Attributes Class Ilerarcny Value p2 Nama beel. part:ipa…fal javalikeN fals ref parti., java.io File (a OxcIcO7318 savedlnd. jave io ile Oxc1c07000 tuezStaleyury.tchpstjulterra.compiler a flugi.. bool. needTo5,, false 1.6 MB exl nr.. org. dipse jdt nterna compile org.eclipse jdt internal core search indexing IndexManager(o (Mc]cdl/hgX nt availing.C ool, activated step By Step Id Llistocram: Lists rumber of instances per Leak Suspects: includes eak suspects and rcf progress.…rull He Dominator Tree: List the biggest objects load Top Components: list reports for 在右侧窗口上方的位置可以看到 heapDump的sze,以及类、对象和类加载器的数量。 右侧窗口中最醒目的饼图直观地显示了dump中最大的儿个对象。鼠标光标划过饼图中代表某个对象 的区块时可以在左侧 Inspector窗口中看到对象的细节,在区上点击鼠标左键可以通过菜单项钻取到关于 其对应的对象更多的细节。 第三步: The Histogram(直方图) 在工具栏中选择 histogram可以查看每个类的灾例的数量,以及sha‖lWse和 retained size 昌 base. hprof 川Q|·Q,园,函名 i Overview Histogram 53 Class name Objects shallow Heap Retained Heap N C charl 184.380 18864024 =18864,024 C java util. Hash MapSNode 206867 6683,74 =20.584224 java. lang String 155.732 373758217952008 C java util. Hash Maps NodeD 57,081 3.643358=23309536 javautil. Hash Map 72077 3459,696 ≥=25339616 CintO 29626 3425418 =3426,408 C byte 792l 3409,152 =3409,152 C java lang, ObjectO 39,185 102320 >=16,787000 C java, util. Collections SUnmodifiableMap 60,776 1944832 =6,729000 Memory analyzer默认展示了每个对象的 retained size。然而同一组对象(在这里指的是同一个类的所有 致一思维翻译整理 zhe a. com
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: mat分析
 输入关键字,在本站1000多万海量源码库中尽情搜索: