原文:https://blog.csdn.net/jijianshuai/article/details/79128033

 -Xmx20m -Xms5m -XX:HeapDumpOnOutofMemoryError -XX:HeapDumpPath=d:/a.dump
分配了20M最大空间 ,启动 最小空间5M , 发生了 内存溢出错误 dump路径为a.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 等。

最新文章

  1. Objective-C 快速入门--基础(三)
  2. OAF_开发系列13_实现OAF通过Vector动态查询设置(案例)
  3. JAVASE02-Unit02: 正则表达式 、 Object 、 包装类
  4. Bzoj 4556: [Tjoi2016&amp;Heoi2016]字符串
  5. iOS开发-No matching provisioning profiles found解决方法
  6. Task线程 同时执行多个任务
  7. php中奖算法逻辑
  8. MysqlRouter 实现mysql5.6读写分离
  9. Grails笔记三:完整的文件上传实例
  10. appium启动运行log分析
  11. Linux下常用的配置
  12. redis的set类型!!!!
  13. 《ASP.NET Core In Action》读书笔记系列二 ASP.NET Core 能用于什么样的应用,什么时候选择ASP.NET Core
  14. doi
  15. 深入flask中的request
  16. 学习笔记之PostgreSQL / pgAdmin / Psycopg / PostGIS
  17. Android多线程操作sqlite(Sqlite解决database locked问题)
  18. 用UIScrollView产生视差效果
  19. SaltStack远程执行
  20. Hibernate生成数据库表

热门文章

  1. thinkphp目录解析
  2. vue 之 Nodejs介绍
  3. 简单VBS教程.RP
  4. 转换流 Properties集合 序列化 工具
  5. 安装thrift时,注意openssl参数
  6. java读取classpath下properties文件注意事项
  7. MVVM模式WPF的ComboBox数据绑定,使用Dictionary作为数据源
  8. [python]glob模块中的glob()函数为什么返回空列表??
  9. 20164305 徐广皓 Exp6 信息搜集与漏洞扫描
  10. vue 用axios实现调用接口下载excel