使用VisualVM查看Java Heap Dump

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

【本文转载于使用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)”就会显示最近的垃圾回收根节点。

实例数

英文原文:Browsing a Heap Dump  

目录
相关文章
|
7月前
|
Java
java dump文件分析
java dump文件分析
82 0
|
1月前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
7月前
|
监控 Java 开发者
Java一分钟之-Java性能分析与调优:JProfiler, VisualVM等工具
【5月更文挑战第21天】本文介绍了Java性能优化的两个利器——JProfiler和VisualVM。JProfiler通过CPU Profiler、内存分析器和线程视图帮助解决过度CPU使用、内存泄漏和线程阻塞问题;VisualVM则聚焦于GC行为调整和类加载优化,以减少内存压力和提高应用性能。使用这些工具进行定期性能检查,是提升Java应用效率的关键。
210 0
|
5月前
|
Java 关系型数据库 数据库
实时计算 Flink版操作报错合集之拉取全量数据时,如何解决Checkpoint失败并且报错为 "java.lang.OutOfMemoryError: Java heap space"
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
存储 Java 对象存储
Java虚拟机(JVM)中的栈(Stack)和堆(Heap)
在Java虚拟机(JVM)中,栈(Stack)和堆(Heap)是存储数据的两个关键区域。它们在内存管理中扮演着非常重要的角色,但各自的用途和特点有所不同。
65 0
|
6月前
|
Arthas 存储 监控
性能监控之常见 Java Heap Dump 方法
【6月更文挑战8天】性能监控之常见 Java Heap Dump 方法
210 7
|
7月前
|
监控 Ubuntu Java
Java VisualVM远程监控JVM
Java VisualVM远程监控JVM
Java VisualVM远程监控JVM
|
7月前
|
缓存 Java
8 种 Java 内存溢出之一:Java Heap Space
8 种 Java 内存溢出之一:Java Heap Space
|
7月前
|
监控 算法 Java
垃圾回收机制与性能调优:描述Java虚拟机(JVM)的垃圾回收算法,并解释为什么需要这些算法。如何使用Java内存分析工具(如VisualVM、JConsole或MAT)来识别和解决内存泄漏问题?
垃圾回收机制与性能调优:描述Java虚拟机(JVM)的垃圾回收算法,并解释为什么需要这些算法。如何使用Java内存分析工具(如VisualVM、JConsole或MAT)来识别和解决内存泄漏问题?
79 1
|
7月前
|
监控 Java 流计算
Java Thread dump和Head dump 文件分析
Java Thread dump和Head dump 文件分析
101 0