1. 查看进程:ps -ef | grep java
2. 使用jmap查看进程数据:jmap -histo 3806 | head -20
num #instances #bytes class name
----------------------------------------------
1: 4393 3618864 [I
2: 24639 2143256 [C
3: 4272 840864 [B
4: 5188 571672 java.lang.Class
5: 23709 569016 java.lang.String
6: 6934 423800 [Ljava.lang.Object;
7: 8699 278368 java.util.concurrent.ConcurrentHashMap$Node
8: 5215 208600 java.util.LinkedHashMap$Entry
9: 1822 172256 [Ljava.util.HashMap$Node;
10: 4762 152384 java.util.HashMap$Node
11: 8758 140128 java.lang.Object
12: 1737 125064 java.lang.reflect.Field
13: 1121 98648 java.lang.reflect.Method
14: 2120 84800 java.math.BigInteger
15: 3379 81096 com.google.inject.TypeLiteral
16: 81 78848 [Ljava.util.concurrent.ConcurrentHashMap$Node;
17: 976 78080 com.google.common.cache.LocalCache$Segment
3. jmap命令执行会造成卡顿很长时间,会产生转储文件
4. 可以用jvm dump文件
jmap -dump:format=b,file=20200208.dump 3806
5. java Visual VM 远程查看、本地查看堆文件
6. arthas工具使用
java -jar arthas.boot.jar 启动arhtas
jvm 打印GC信息,使用的回收器
thread 66(线程id) 打印线程详情
sc 查询类信息
heapdump 类似于jmap命令
jad 反编译 java decompiler,使用方法:jad com.java.gz.TestJava
redfine