通过jinfo工具在full GC前后做heap dump
上一篇:通过JMX控制在full GC前后做heap dump
想像一个Java进程在远程服务器上突然遇到频繁full GC的状况。我们只是想动态的改变HeapDumpBeforeFullGC与HeapDumpAfterFullGC参数来获取full GC前后的heap dump,并不想在侵入到Java程序内去通过代码做这个工作。这种场景里jinfo就能派上用场了——它已经把相关的JMX操作给封装好了。
(提醒:如果找不到打出来的heap dump的话,请设置HeapDumpPath。这个参数指定heap dump的目录。
-XX:HeapDumpPath=path/to/your/heap/dumps/dir)
上一篇其实已经提到了,通过jinfo -flag同样可以设置标记为manageable的VM参数。参考jinfo的帮助文档:
2、jinfo -flag +HeapDumpBeforeFullGC <pid>
这句正确执行之后本来就不会在console上输出任何东西。只是开启了VM的heap dump功能就完事了。然后在发生full GC的时候你就应该在Java进程的“工作目录”(或者说“当前目录”)看到相应的heap dump文件。 哦,最近在做即时通信的项目,偶尔会有这方面的问题,造成消息丢失。
很谢谢你的帮忙。