1.JDK与JRE的区别
JDK 开发者工具 = JRE + javac编译器 + 开发者工具
JRE 运行环境
2.jps、jstack、jmap、jhat、jstat、hprof都是安装JDK后添加环境变量后才可使用的。
3.JPS 只能查看java进程
4.查线程问题
jps [options] [hostid]
-q 不输出类名、Jar名和传入main方法的参数
-m 输出传入main方法的参数
-l 输出main类或Jar的全限名
-v 输出传入JVM的参数
jstack [option] pid
-l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况
-m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法)
ps
-Lfp pid ps -mp pid -o THREAD, tid, time top -Hp pid 查询最耗时的cpu的线程
printf "%x\n" pid 获得线程的16进制
jstack 进程号pid | grep 线程号
5.查询进程的java heap使用情况
jmap -heap 21711
jmap -histo:live 21711 | more 查看存活对象
jstat -gc 21711 250 4 (pid 间隔毫秒 采样次数) 获取gc情况
S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
PC、PU:永久代容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时