• 使用VisualVM查看Java Heap Dump


    浏览Heap Dump

    可以使用VisualVM浏览heap dump文件的内容,从而快速查看在堆中分配的对象。Heap dumps在主窗口的heap dump子标签页中显示。你可以打开保存在本地的heap dump文件(.hprof)或者使用VisualVM捕获正在运行的程序的heap dumps。

    一个heap dump是Java虚拟机(JVM)在某一时刻所有对象的快照。JVM从堆中为所有的类实例和数组分配内存。当一个对象不再被使用并且没有对它的引用时,垃圾回收器回收其堆内存。通过查看堆,你可以找到对象创建的位置,发现对象的引用。如果JVM试图从堆中移除不再需要的对象时失败了,VisualVM可以定位到离该对象最近的垃圾回收根(garbage collecting root)。

    打开Heap Dump文件

    如果你有一个保存在本地的heap dump文件,在VisualVM中通过File > Load菜单项加载该文件。VisualVM能打开.hprof格式的heap dumps文件。打开后,heap dump作为主窗口的一个子标签页。

    捕获Heap Dump

    可以使用VisualVM捕获一个本地运行的应用程序的heap dump。捕获的heap dump文件是一个临时文件,关闭VisualVM后自动删除,若要保留,需要将其另存为文件。

    可通过以下两种方法捕获heap dump:

    • 在左侧“Application”(应用程序)子窗口中右击相应的应用程序,选择Heap Dump(堆Dump)。
    • 在Monitor(监视)子标签页中点击Heap Dump(堆Dump)按钮。

    本地应用程序的Heap dumps作为应用程序标签页的一个子标签页打开。同时,heap dump在左侧的Application(应用程序)栏中对应一个含有时间戳的节点。右击这个节点选择save as(另存为)即可将heap dump保存到本地。

    浏览Heap Dump

    VisualVM提供了一下可视化视图来浏览heap dumps:

    Summary View(概述)

    打开一个heap dump时,VisualVM默认显示“概述”标签页。概述视图显示了该heap dump的捕获环境和其他系统属性。

    概述实体

    Classes View(类)

    类视图显示了类列表和其对应的实例数量、所占比例。右击类名选择“Show in Instances View(在实例视图中显示)”即可查看指定类的实例列表。

    点击列头可按指定列排序。可以使用类列表下方的“类名过滤器(Class Name Filter)”来过滤类,也可以通过右击一个类名选择“Show Only Subclasses(只显示子类)”来将显示结果限制为指定类的子类。

    类视图

    Instances View(实例数)

    实例数视图显示了选中类的对象实例。在“实例(Instance)”栏中选中一个实例,右侧的“字段(Fields)”和“引用(References)”栏将显示该实例对应的字段和对它的引用。在引用栏中,右击一条并选择“显示最近的垃圾回收根节点(Show Nearest GC Root)”就会显示最近的垃圾回收根节点。

    实例数

  • 相关阅读:
    CSS基础
    数据库优化之SQL Server
    压力测试与系统调优
    JBoss架构分析
    JBoss基本配置
    深入了解硬盘结构
    EJB2与EJB3架构对比
    JBoss高级配置
    病毒分类及病毒命名规则详解
    深入讲解防火墙的概念原理与实现
  • 原文地址:https://www.cnblogs.com/linghu-java/p/5689242.html
Copyright © 2020-2023  润新知