此命令可以用来查看内存信息。
实例个数以及占用内存大小
[work@16-11-118 qf-pms]$ jmap -histo 32417 > ./log.txt^C
打开log.txt,文件内容如下:
num #instances #bytes class name
----------------------------------------------
1: 474372 115308728 [C
2: 1509012 84504672 java.util.concurrent.ConcurrentHashMap$ValueIterator
3: 19723 69972688 [I
4: 121514 40306952 [B
5: 207259 8290360 java.util.HashMap$KeyIterator
6: 258544 6205056 java.lang.String
7: 45478 4048792 [Ljava.lang.Object;
8: 113824 3642368 java.lang.StackTraceElement
9: 71465 3555400 [Ljava.lang.String;
10: 38626 3399088 java.lang.reflect.Method
11: 56927 1821664 java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
12: 72434 1738416 java.lang.StringBuilder
13: 49423 1581536 java.util.HashMap$Node
14: 45757 1464224 java.io.FileDescriptor
15: 14448 1221376 [Ljava.lang.StackTraceElement;
16: 45432 1090368 [Ljava.net.InetSocketAddress;
17: 33852 1083264 java.util.Hashtable$Entry
18: 44342 896232 [Ljava.lang.Class;
19: 18027 865296 java.nio.HeapByteBuffer
20: 10058 772368 [S
21: 6026 678488 java.lang.Class
22: 9445 604480 java.text.DateFormatSymbols
23: 5327 589264 [Ljava.util.HashMap$Node;
24: 23914 573936 java.lang.StringBuffer
25: 22117 530808 java.util.concurrent.CopyOnWriteArrayList$COWIterator
26: 19712 473088 sun.misc.ProxyGenerator$ConstantPool$IndirectEntry
27: 14389 460448 java.util.concurrent.ConcurrentHashMap$Node
28: 18301 439224 java.util.ArrayList
- num:序号
- instances:实例数量
- bytes:占用空间大小
- class name:类名称
堆信息
[work@16-11-118 qf-pms]$ jmap -heap 32417
Attaching to process ID 32417, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.51-b03
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 2147483648 (2048.0MB)
NewSize = 357564416 (341.0MB)
MaxNewSize = 715653120 (682.5MB)
OldSize = 716177408 (683.0MB)
NewRatio = 2
SurvivorRatio = 8
MetaspaceSize = 268435456 (256.0MB)
CompressedClassSpaceSize = 1073741824 (1024.0MB)
MaxMetaspaceSize = 536870912 (512.0MB)
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 536870912 (512.0MB)
used = 351596720 (335.3087615966797MB)
free = 185274192 (176.6912384033203MB)
65.4899924993515% used
From Space:
capacity = 44564480 (42.5MB)
used = 21440176 (20.446945190429688MB)
free = 23124304 (22.053054809570312MB)
48.11045927159927% used
To Space:
capacity = 44564480 (42.5MB)
used = 0 (0.0MB)
free = 44564480 (42.5MB)
0.0% used
PS Old Generation
capacity = 716177408 (683.0MB)
used = 114704 (0.1093902587890625MB)
free = 716062704 (682.8906097412109MB)
0.016016143307329794% used
14552 interned Strings occupying 1221080 bytes.
如果对堆内存有一些了解的话,应该能看的明白这些输出的意思。
即将垃圾回收对象个数
[work@16-11-118 qf-pms]$ jmap -finalizerinfo 32417
Attaching to process ID 32417, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.51-b03
Number of objects pending for finalization: 0
堆内存dump
[work@16-11-118 qf-pms]$ jmap -dump:format=b,file=./dmp 32417
Dumping heap to /opt/web/qf-pms/dmp ...
Heap dump file created
我们可以用jhat命令来查看此dump文件的内容
[work@16-11-118 qf-pms]$ jhat -J-Xmx500m dmp
Reading from dmp...
Dump file created Sat Jul 15 10:36:13 CST 2017
Snapshot read, resolving...
Resolving 3915212 objects...
Chasing references, expect 783 dots.......................
..........................................................
..........................................................
..........................................................
..................
Eliminating duplicate references..........................
..........................................................
..........................................................
..........................................................
...............
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
然后在浏览器中输入:http://localhost:7000来查看堆中的对象信息