概要
jmap [options] pid
- options:命令行选项
- pid:进程ID
jmap命令可以查看堆内存的详细情况,以及生成heap dump文件等。本文使用的是JDK10,不同版本间可能存在差异。
options
-clstats:查看Java堆的类加载器统计信息。
[root@izbp1chtb8a3vd2mzvuawlz /]# jmap -clstats 11457|more
Index Super InstBytes KlassBytes annotations CpAll MethodCount Bytecodes MethodAll ROAll RWAll Total ClassName
1 -1 3529760 472 0 0 0 0 0 24 584 608 [B
2 -1 2642400 472 0 0 0 0 0 24 584 608 [C
3 12 1067496 584 128 13064 103 4108 59688 17416 57304 74720 java.lang.String
4 12 863280 640 0 21632 132 5437 73064 23488 73664 97152 java.lang.Class
5 12 742432 560 0 1360 9 213 2760 1488 3528 5016 java.util.concurrent.ConcurrentHashMap$Node
6 -1 428368 472 0 0 0 0 0 24 584 608 [Ljava.lang.Object;
7 12 394752 552 0 1384 7 149 2224 1152 3328 4480 java.util.HashMap$Node
8 3915 336160 1160 0 6768 45 1107 24896 6296 27256 33552 java.lang.reflect.Method
9 -1 277640 472 0 0 0 0 0 32 584 616 [Ljava.util.HashMap$Node;
10 -1 261728 472 0 0 0 0 0 24 584 608 [I
-finalizerinfo: 查看在F-Queue队列等待执行finalizer方法的对象
[root@izbp1chtb8a3vd2mzvuawlz /]# jmap -finalizerinfo 11457
No instances waiting for finalization found
-histo[:live]:查看Java堆中的对象的信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jmap -histo:live 11457|more
num #instances #bytes class name (module)
-------------------------------------------------------
1: 45923 3529760 [B (java.base@10.0.2)
2: 1034 2642400 [C (java.base@10.0.2)
3: 44479 1067496 java.lang.String (java.base@10.0.2)
4: 7247 863280 java.lang.Class (java.base@10.0.2)
5: 23201 742432 java.util.concurrent.ConcurrentHashMap$Node (java.base@10.0.2)
6: 7868 428368 [Ljava.lang.Object; (java.base@10.0.2)
7: 12336 394752 java.util.HashMap$Node (java.base@10.0.2)
8: 3820 336160 java.lang.reflect.Method (java.base@10.0.2)
9: 3243 277640 [Ljava.util.HashMap$Node; (java.base@10.0.2)
10: 2832 261728 [I (java.base@10.0.2)
-dump dump-options:dump heap文件
[root@izbp1chtb8a3vd2mzvuawlz /]# jmap -dump:live,format=b,file=heap.bin 11457
Heap dump file created
live:指定时,仅保存存活的对象。
format=b: 以二进制格式生成文
file=filename: 生成的文件名