专栏首页java 成神之路生成 Heap Dump 的几种方式

生成 Heap Dump 的几种方式

Heap Dump 概述

Heap Dump 是 Java进程所使用的内存情况在某一时间的一次快照。以文件的形式持久化到磁盘中。 Heap Dump的格式有很多种,而且不同的格式包含的信息也可能不一样。但总的来说,Heap Dump一般都包含了一个堆中的Java Objects, Class等基本信息。同时,当你在执行一个转储操作时,往往会触发一次GC,所以你转储得到的文件里包含的信息通常是有效的内容(包含比较少,或没有垃圾对象了) 。

Heap Dump 包含的信息

  • 所有的对象信息 对象的类信息、字段信息、原生值(int, long等)及引用值
  • 所有的类信息 类加载器、类名、超类及静态字段
  • 垃圾回收的根对象 根对象是指那些可以直接被虚拟机触及的对象
  • 线程栈及局部变量 包含了转储时刻的线程调用栈信息和栈帧中的局部变量信息

Heap Dump 获取方式

1. 使用 jmap 命令生成 dump 文件

jmap -dump:live,format=b,file=d:\dump\heap.hprof <pid>

2. 使用 jcmd 命令生成 dump 文件

jcmd <pid> GC.heap_dump d:\dump\heap.hprof

3. 使用 JVM 参数获取 dump 文件

  • 1. -XX:+HeapDumpOnOutOfMemoryError 当OutOfMemoryError发生时自动生成 Heap Dump 文件。

这可是一个非常有用的参数,因为当你需要分析Java内存使用情况时,往往是在OOM(OutOfMemoryError)发生时。

  • 2. -XX:+HeapDumpBeforeFullGC 当 JVM 执行 FullGC 前执行 dump。
  • 3. -XX:+HeapDumpAfterFullGC 当 JVM 执行 FullGC 后执行 dump。
  • 4. -XX:+HeapDumpOnCtrlBreak 交互式获取dump。在控制台按下快捷键Ctrl + Break时,JVM就会转存一下堆快照。
  • 5. -XX:HeapDumpPath=d:\test.hprof 指定 dump 文件存储路径。

注意:JVM 生成 Heap Dump 的时候,虚拟机是暂停一切服务的。如果是线上系统执行 Heap Dump 时需要注意。

4. 使用其它工具获取dump文件

分析 Heap Dump 的工具都可以获取 Heap Dump 文件。 比如:jdk 自带的工具 jvisualvm。 其它工具:Eclipse memory analyzer(jmat)、JProfiler 等。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • RocketMQ 生产者 Producer 发送消息

    org.apache.rocketmq.client.impl.producer.DefaultMQProducerImpl

    java404
  • 局部变量和常量的性能分析

    java404
  • iostat 命令详解

    java404
  • SCCM2012之NAP网络保护

    一、微软的网络访问保护(NAP)是随着Windows Server 2008面世的限制网络访问保护服务。采用NAP的强制系统符合健康要求,可以使得不符合健康要求...

    李珣
  • 快讯 | 贵州要成为 AI 中心?现在只差程序员了

    记者 | 周翔 又一家国际巨头看上了贵州。 8 月 30 日上午,英特尔宣布与中国人工智能产业创新联盟、贵阳市人民政府共同签署战略合作备忘录,建立人工智能战略合...

    AI科技大本营
  • Linux下安装DB2数据库

    有暗香盈袖
  • BizTalk 2016 配置 RosettaNet遇到的坑

    本文只针对已经安装好BizTalk 2016 需要在安装RosettaNet加速器的伙伴。 IIS配置 权限问题 错误信息 Failed to get I...

    阿新
  • WebAssembly试玩

    主要目标是在Web环境支持高性能应用。但设计上不依赖Web特性,也不针对Web特性提供功能,也可以用在其它环境

    ayqy贾杰
  • 深度|你不需要大数据,你需要的是正确的数据

    你需要的并不是大数据,而是正确的数据。以Uber为例,Uber每天都能收集到海量数据,但Uber会分析全部数据吗?不会,它只用那些能让产品更快连接乘客和司机的...

    灯塔大数据
  • 如何在Nuxt应用程序中加载外部脚本

    我需要加载一个样式表和几个脚本。我将分享我如何使用Nuxt完成此操作以及实现此操作的不同方法。

    前端知否

扫码关注云+社区

领取腾讯云代金券