美文网首页程序员
Java在无限FullGC时dump内存方法

Java在无限FullGC时dump内存方法

作者: 开心就好168 | 来源:发表于2017-11-21 14:42 被阅读0次

    常规方法1: gcore或jmap -F 强行dump;

     常规方法2:jinfo/jcmd 增加 HeapDumpBeforeFullGC/HeapDumpAfterFullGC flag

    常规方法3:重启 设置 JVM 参数 -XX:+UseHeapDumpBeforeFullGC

    常规方法4:jmx,mxbean直接动态修改,比如去Jconsole里setVmOption,直接将HeapDumpBeforeFullGC和HeapDumpAfterFullGC设置成true;

    非常规方法:无限FGC时用

    先用ps -ef|grep java 到jvm进程,gdb attach上去, 例如gdb -p 34567

    通过p命令显示HeapDumpBeforeFullGC变量的地址(默认是false)

    (gdb) p &HeapDumpBeforeFullGC

    $1 = ( *) 0x10f35754f

    runtime设置这个变量为true(1)

    (gdb) set *0x10f35754f=1

    (gdb) p HeapDumpBeforeFullGC

    $2 = 1

    下次FullGC触发前,就会自动HeapDump了到默认的 java_pidxxx.hprof了。

    有了dump文件后要恢复flag回去

    (gdb) p HeapDumpBeforeFullGC

    $1 = 1

    (gdb) p &HeapDumpBeforeFullGC

    $2 = ( *) 0x10f35754f

    (gdb) set *0x10f35754f=0

    (gdb) p HeapDumpBeforeFullGC

    $3 = 0

    相关文章

      网友评论

        本文标题:Java在无限FullGC时dump内存方法

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