JDK内置命令工具
jps
-
作用
- 查看java进程的pid和全路径主类名和jvm参数
-
使用
- -l : 输出所有正在运行java进程的pid 和主类名
- -v :输出正在运行java进程的pid和主类名和运行参数
jstack
-
作用
- 查看某个java进程当前的堆栈信息, 也就是当前进程中的线程快照
-
使用
- -l 可以检测有没有发生死锁
-
Dump文件的线程状态一般其实就以下3种:
- RUNNABLE,线程处于执行中
- BLOCKED,线程被阻塞
- WAITING,线程正在等待
jstat
-
作用
- 查看JVM 的信息,比如新生代、老年代大小和回收次数
-
也可以频率的输出
- 需要每500毫秒查询一次PID为1612垃圾回收情况,一共查询5次,那命令如下:
- jstat -gc 1612 500 5
-
输出GC相关信息:
- S0C,S1C:S0区和S1区大小,KB
- S0U,S1U:S0区和S1区已使用大小,KB
- EC,OC,MC:eden区,old老年代区,方法区大小,KB
- EU,OU,MU:eden区,old老年代区,方法区已使用大小,KB
- CCSC,CCSU:压缩类空间大小,压缩类空间使用大小,KB
- YGC,FGC:年轻代GC,Full GC次数
- YGCT,FGCT:年轻代GC,FullGC耗时
- GCT:GC总耗时
jmap
- 作用
- 查看堆中的各个类对象实例大小
- 使用
- -histo:显示堆中对象统计信息,包括类、实例数量和合计容量
- -dump:生成Java堆快照。格式为:-dump:[live,]format=b,file=,其中live子参数说明是否只dump出存活的对象
jvisualvm(推荐)
- 作用
- 可视化工具, 可以查看java进程的cpu, 堆栈,新生代、老年代、对象实例等等
- 使用
- 运行jar
- 也可以监控远程, 比如服务器中运行的java进程, 需要建立jmx连接
- (28条消息) JvisualVm远程连接Docker构建的项目_熟透的蜗牛的博客-CSDN博客_visualvm docker