美文网首页
java应用通过dump文件排错

java应用通过dump文件排错

作者: 刘大坝 | 来源:发表于2020-11-21 11:13 被阅读0次

    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应用通过dump文件排错

          本文链接:https://www.haomeiwen.com/subject/jgisiktx.html