- jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为:heapdump或dump文件)。如果不使用jmap命令,要想获取Java堆转储快照,可以通过如下方式:
- -XX:+HeapDumpOnOutOfMemoryError参数,在OOM异常后自动生成dump文件;
- -XX:+HeapDumpOnctrlBreak参数,然后[Ctrl]+[Break]键生成dump文件;
- Linux下kill -3命令发送进程退出信号,“吓唬”一下虚拟机,拿到dump文件。
jmap命令格式
jmap [ option ] vmid
jmap工具主要选项
选项 | 作用 |
---|
-dump | 生成Java堆转储快照。格式为:-dump:[live,]format=b,file=<filename>,其中live子参数说明是否只dump存活的对象 |
-finalizerinfo | 显示在F-Queue中等待Finalizer线程执行finalize方法的对象。只在Linux/Solaris平台下有效 |
-heap | 显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris平台下有效 |
-histo | 显示堆中对象统计信息,包括类、实例数量、合计容量 |
-permstat | 以ClassLoader为统计口径显示永久代内存状态、只在Linux/Solaris平台下有效 |
-F | 当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在Linux/Solaris平台下有效 |
示例
[root@localhost home]# jmap -dump:format=b,file=/opt/11561.hprof 11561
Dumping heap to /opt/11561.dump ...
Heap dump file created
[root@localhost home]# ll /opt/11561.hprof
-rw-------. 1 root root 280941044 Jun 28 08:19 /opt/11561.hprof