1. 查看进程:ps -ef | grep java
2. 使用jmap查看进程数据:jmap -histo 3806 | head -20
num #instances #bytesclass name
----------------------------------------------
1:43933618864[I
2: 246392143256[C
3:4272 840864[B
4:5188 571672java.lang.Class
5: 23709 569016java.lang.String
6:6934 423800[Ljava.lang.Object;
7:8699 278368java.util.concurrent.ConcurrentHashMap$Node
8:5215 208600java.util.LinkedHashMap$Entry
9:1822 172256[Ljava.util.HashMap$Node;
10:4762 152384java.util.HashMap$Node
11:8758 140128java.lang.Object
12:1737 125064java.lang.reflect.Field
13:112198648java.lang.reflect.Method
14:212084800java.math.BigInteger
15:337981096com.google.inject.TypeLiteral
16:8178848[Ljava.util.concurrent.ConcurrentHashMap$Node;
17: 97678080com.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