https://andyniu.iteye.com/blog/1965571 Linux中生成 Core Dump 文件的方法 1 什么是 Core Dump Core Dump 又叫核心转储。在程序运行过程中发生异常时,将其内存数据保存到文件中,这个过程叫做 Core Dump。 2 Core Dump 的作用 在开发过程中,难免会遇到程序运行过程中异常退出的情况,这时候想要定位哪里出了问题,仅仅依靠程序自身的信息打印(日志记录)往往是不够的,这个时候就需要 Core Dump 文件来帮忙了。 一个完整的 Core Dump 文件实际上相当于恢复了异常现场,利用 Core Dump 文件,可以查看到程序异常时的所有信息,变量值、栈信息、内存数据,程序异常时的运行位置(甚至记录代码行号)等等,定位所需要的一切信息都可以从 Core Dump文件获取到,能够非常有效的提高定位效率。 3 如何生成 Core Dump

前UAP主要使用IBM jdk和SUN jdk,当中间件发生内存溢出时,IBM jdk会自动生成dump文件,而SUN jdk不会生成,所以我们通常推荐使用IBMjdk。 但在有些时候,我们需要分析jvm内存使用情况,例如各分区占用率,哪些对象占用等,需要我们手动生成dump文件,以下说明linux下IBMjdk和SUNjdk手工生成dump文件方法。 第一步:查看进程PID (命令为:ps –ef|grep java);

第二步:进入到jdk目录下 (命令为:cd/data/jdk1.6.0_27) 进入到bin目录下 (命令为:cd bin)

第三部:分析JVM内存 ./jmap –heap pid 查看整个JVM的内存使用情况,例如:

./jmap –histo pid 查看JVM中对象内存占用情况

导出整个JVM中的内存信息 jdk/bin目录下生成文件 (命令为:./jmap –dump:format=b,file=[文件名]) 例如:./jmap –dump:format=b,file=0807.txt 27054

生成文件为二进制文件,无法直接查看,需要借助jvm分析工具。

自动生成: 1.2自动生成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 时需要注意。

2,查看dump文件 推荐使用jdk自带的visualVM,其在JDK_HOME/bin目录下,可搜:jvisualvm。注意:windows系统是jvisualvm.exe文件。 然后装入快照即可。