java排错_java应用通过dump文件排错

java应用排错处理

一、应用程序手动导出dump文件

jmap -dump:format=b,file=文件名 [pid]

jmap -dump:format=b,file=d:/fullGc.hprof 123456

format=b,表示以字节的形式

[pid],可以通过如下方式查看

ps -ef|grep java

或者

jps -m

或者通过top命令查看

top

top命令的操作,请查看底部参考文档。

遇到问题1:

-bash: jmap: command not found”

解决方式:

注:如果要使用jmap,必须保证虚拟机中已经安装了java-1.8.0-openjdk-devel-debug或java-1.7.0-openjdk-devel-debug或java-1.6.0-openjdk-devel-debug,但是Contos中默认是没有安装的,因此需要先安装openjdk-devel-debug。

安装openjdk-devel-debug

yum install -y java-1.8.0-openjdk-devel-debug

安装jmap

yum -y whatprovides '*/jmap'

执行命令后,从打印的日志中找到java-1.8.0-openjdk-devel-debug-1.8.0.191.b12-1.el7_6.x86_64(通常是最后一个)

再次执行进行验证:

# jmap

如果有提示信息显示,则安装成功。

二、配置应用程序自动导出dump文件

1.自动生成 heap dump文件

当OutOfMemoryError发生时,自动生成 heap dump文件的方法,输出到指定的路径d:/aa.hprof

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/aa.hprof

2.执行 FullGC 前执行dump

当 JVM 执行 FullGC 前执行 dump

-XX:+HeapDumpBeforeFullGC

3. 行 FullGC 后执行dump

-XX:+HeapDumpAfterFullGC

4、内存消耗查看dump

jmap -histo:live pid >> 文件名

如:

jmap -histo:live 16900 >> d:/histoLive.hprof

三、分析

导出dump文件,然后使用jdk自带的jvisualvm工具,把文件导进去进行分析,依次执行

文件 》 装入 》 选中文件.. 即可。

注意:

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

参考文档:

1、https://www.pianshen.com/article/7484337559/

2、https://blog.csdn.net/dhj199181/article/details/108504982

3、https://www.cnblogs.com/wangchen07026/p/7650688.html

4、https://www.cnblogs.com/niuben/p/12017242.html

学习笔记,老规矩,联系作者侵删。

你可能感兴趣的:(java排错)