Java在无限FullGC时dump内存方法

常规方法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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,958评论 19 139
  • jstack-- 如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java sta...
    not_null阅读 8,006评论 2 62
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,142评论 0 62
  • 欢迎关注幼儿说,用简书的妈咪,都是有品味的母亲 有人说,孩子学写字时最重要的是要从一开始纠正笔画笔顺,也有人说要让...
    幼儿说阅读 997评论 0 5
  • 2017.11.12。无为。焦点解决分享第97天。今天下午,单位领导通知要省来检查,早早整装检查,可等到后来不来了...
    无为wyw阅读 206评论 1 1