MAT

作者: xiaotimel | 来源:发表于2020-05-28 19:22 被阅读0次

    MAT 下载路径 https://www.eclipse.org/downloads/download.php?file=/mat/1.10.0/rcp/MemoryAnalyzer-1.10.0.20200225-macosx.cocoa.x86_64.zip

    更改Info.plist (显示包内容->Contents下) 指定jdk路径

    <array>
        <!-- 指定启动使用的JVM -->
        <string>-vm</string>
        <string>/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/bin/java</string>
        <!-- 指定启动的工作空间 -->
        <string>-data</string>
          <string>/Applications/mat.app/Contents/MacOS/workspace</string>
            <!-- 原有内容,不动 -->
        <string>-keyring</string>
        <string>~/.eclipse_keyring</string>
    </array>
    

    要全面掌握MAT的用法,必须要先了解 隐藏在 MAT 使用中的四大细节,如下所示:

    1)、善于使用 Regex 查找对应泄漏类。
    2)、使用 group by package 查找对应包下的具体类。
    3)、明白 with outgoing references 和 with incoming references 的区别。
    - with outgoing references:它引用了哪些对象。
    - with incoming references:哪些对象引用了它。
    4)、了解 Shallow Heap 和 Retained Heap 的区别。
    Shallow Heap:表示对象自身占用的内存。
    Retained Heap:对象自身占用的内存 + 对象引用的对象所占用的内存。

    除此之外,MAT 共有 5个关键组件 帮助我们去分析内存方面的问题,分别如下所示:

    1)、Dominator_tree
    2)、Histogram
    3)、thread_overview
    4)、Top Consumers
    5)、Leak Suspects

    1、Dominator(支配者):

    如果从GC Root到达对象A的路径上必须经过对象B,那么B就是A的支配者。

    2、Histogram和dominator_tree的区别:

    1)、Histogram 显示 Shallow Heap、Retained Heap、Objects,而 dominator_tree 显示的是 Shallow Heap、Retained Heap、Percentage。
    2)、Histogram 基于 类 的角度,dominator_tree是基于 实例 的角度。Histogram 不会具体显示每一个泄漏的对象,而dominator_tree会。

    3、thread_overview

    查看 线程数量 和 线程的 Shallow Heap、Retained Heap、Context Class Loader 与 is Daemon。

    4、Top Consumers

    通过 图形 的形式列出 占用内存比较多的对象。

    在下方的 Biggest Objects 还可以查看其 相对比较详细的信息,例如 Shallow Heap、Retained Heap。

    5、Leak Suspects

    列出有内存泄漏的地方,点击 Details 可以查看其产生内存泄漏的引用链。

    相关文章

      网友评论

          本文标题:MAT

          本文链接:https://www.haomeiwen.com/subject/abtzahtx.html