参考此文,在本机实践:https://my.oschina.net/feichexia/blog/196575
jmap 可以用dump 再用jhat 查看使用
jstack 查看堆内存 加-heap 使用 各代内存大小 使用情况 查看各线程状态
jstat 查看各内存的使用情况,eden survior perment 使用/未使用
jprof 查看cpu使用情况
jmap -heap pid
top -Hp pid 查看各线程
遇到下面的问题:
Exception in thread "main" java.lang.reflect.InvocationTargetException
搜索说是 java程序运行的版本跟jmap版本不一致,也就是我在终端中的java版本是1.7 idea里用的是1.8.把1.8改成了1.7
target需要调整
project structure 里source 的language level 也需要降到7
jmap -heap
jmap -dump
jmap -histo[:live]
查看堆内存使用情况:
lxxxxxxxx-pc:~$ jmap -heap 5362
Attaching to process ID 5362, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.60-b09
using thread-local object allocation.
Parallel GC with 4 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 3072327680 (2930.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 17592186044415 MB
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 21757952 (20.75MB)
MaxPermSize = 85983232 (82.0MB)
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
PS Young Generation
Eden Space:
capacity = 48234496 (46.0MB)
used = 3873096 (3.6936721801757812MB)
free = 44361400 (42.30632781982422MB)
8.029722130816916% used
From Space:
capacity = 7864320 (7.5MB)
used = 0 (0.0MB)
free = 7864320 (7.5MB)
0.0% used
To Space:
capacity = 7864320 (7.5MB)
used = 0 (0.0MB)
free = 7864320 (7.5MB)
0.0% used
PS Old Generation
capacity = 127926272 (122.0MB)
used = 0 (0.0MB)
free = 127926272 (122.0MB)
0.0% used
PS Perm Generation
capacity = 22020096 (21.0MB)
used = 3648864 (3.479827880859375MB)
free = 18371232 (17.520172119140625MB)
16.570608956473215% used
924 interned Strings occupying 63976 bytes.
查看堆内存中的对象数目(:live 只统计或对象) 对象很多就把少于250的都去掉了 算是个例子
类型对应情况
B byte
C char
D double
F float
I int
J long
Z boolean
[ 数组,如[I表示int[]
[L+类名 其他对象
jmap -histo:live 5497
num #instances #bytes class name
----------------------------------------------
1: 7936 1022480 <methodKlass>
2: 7936 933672 <constMethodKlass>
3: 553 644480 <constantPoolKlass>
4: 518 419168 <constantPoolCacheKlass>
5: 553 379896 <instanceKlassKlass>
6: 1073 352968 [B
7: 1806 220088 [C
8: 630 77176 java.lang.Class
9: 880 56280 [[I
10: 854 53072 [S
11: 1777 42648 java.lang.String
12: 60 32640 <objArrayKlassKlass>
13: 407 21904 [Ljava.lang.Object;
14: 353 14120 java.lang.ref.Finalizer
15: 200 12800 java.net.URL
16: 288 9216 java.util.HashMap$Entry
17: 15 8872 <methodDataKlass>
18: 113 8136 java.lang.reflect.Field
19: 91 7280 [Ljava.util.WeakHashMap$Entry;
20: 83 6640 java.util.jar.JarFile$JarFileEntry
21: 88 5632 java.util.jar.JarFile
22: 72 5472 [Ljava.util.HashMap$Entry;
23: 92 5152 java.util.zip.ZipFile$ZipFileInputStream
24: 91 5096 java.util.WeakHashMap
25: 99 4752 sun.misc.URLClassPath$JarLoader
26: 93 4464 sun.nio.cs.UTF_8$Encoder
27: 79 4424 java.util.zip.ZipFile$ZipFileInflaterInputStream
28: 8 4352 <typeArrayKlassKlass>
29: 108 4320 java.util.LinkedHashMap$Entry
30: 79 3792 java.util.zip.Inflater
31: 78 3744 java.util.HashMap
32: 113 3616 java.util.Hashtable$Entry
33: 110 3520 java.util.concurrent.ConcurrentHashMap$HashEntry
34: 98 3136 java.lang.ref.ReferenceQueue
35: 92 3024 [Ljava.lang.String;
36: 20 2880 [I
37: 88 2816 java.util.zip.ZipCoder
38: 65 2600 java.util.concurrent.ConcurrentHashMap$Segment
39: 104 2496 java.io.ExpiringCache$Entry
40: 11 2288 <klassKlass>
41: 88 2112 java.util.ArrayDeque
42: 65