搜索
写经验 领红包
 > 健康

jvmdump文件生成(jvm的dump太大了怎么分析)

导语:JVM调优dump文件的生成和分析

一、获取JVM的dump文件的两种方式在jvm启动的时候增加两个参数

1、-XX:+HeapDumpOnOutOfMemoryError 出现OOME时生成堆 dump

2、-XX:HeapDumpPath=/home/jvmlogs/ 红色是生成堆文件地址

发现程序异常通过执行指令,直接生成当前JVM的dump文件

1、jmap -dump:format=b,file=/home/admin/logs/heap.hprof 6214

其中红色的生成堆文件的保存地址,6214是进程的id(pid),format=b指定为二进制格式文件。heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用, 线上系统慎用。

二、查看jvm逻辑

1、命令:jmap -heap pid

显示堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息,如图

2、命令:jstat -gc PID 毫秒数 刷新次数 查看垃圾回收GC的情况,包括fullGC次数和耗时

比如命令PID jstat -gc 12880 5000 20 PID12880,5秒刷新一次,只刷新20次

三、JVM内存溢出定位

打开位于jdk安装目录下的bin目录下的jvisualvm.exe

3.1、点击左上角的文件菜单,看到装入选中,找到自己的堆文件所在的位子,可以看见如下图的界面,更改文件类型,选择堆Dump文件,最后打开

3.2、正常的堆文件与异常的堆文件对比

异常的:

正常的:

3.3、查看异常错误的线程

本文内容由小彤整理编辑!