文章目录
-
- 常用工具
- 使用方式
-
- jps
- jmp
- jinfo
- jstack
- jvisualVM
常用工具
- JDK常用的一些工具都在jdk安装包的bin目录下.常用的一些工具以及作用如下图所示
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPR9UNNRVTycGROBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4QzY3gTOyUDMjZTYmhjN4cTY5QDOlJ2MwQmM2QzYhNzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
使用方式
jps
-
列出当前系统中所有的Java进程jps
-
输出应用程序main class的完整package名或者应用程序的jar文件完整路径名jps -l
-
输出传递给JVM的参数,也就是jar包的运行参数.jps -v
jmp
-
打印堆的摘要信息,包括GC算法、堆配置信息和各内存区域使用情况jmap -heap pid
-
打印类加载器信息jmap -clstats pid
-
: 打印等待终结的对象信息jmap -finalizerinfo pid
-
:生成堆转储快照jmap -dump:format=b,file=heapdump.phrof pid
文件。可以使用dump
去分析这个快照文件.jhat
jinfo
-
查看启动时的VM参数.jinfo -flags pid
jstack
-
打印程序的堆栈信息,可以打印出线程的堆栈,检测死锁很好用jstack pid
- 检测cpu高的进程
- top查看cpu占用高的进程,获取进程pid
-
获取cpu占用高的线程idtop -H -p pid
-
将线程id转为16进制数printf "%x\n" id
-
获取堆栈信息jstack pid |grep 16进制的线程ID -A 30
jvisualVM
- 可视化界面,方便使用,但是有时候需要远程连接,需要在程序启动的时候添加VM参数,并且要保持远程端口通畅
- 通常情况下,我们的服务都是启动在docker容器中.想监控远程的jvm,需要添加以下几个参数,注意一定要打开端口.提供给JMX连接
-Dcom.sun.management.jmxremote.port=port
-Dcom.sun.management.jmxremote
-Djava.rmi.server.hostname=ip
-Dcom.sun.management.jmxremote.rmi.port=port
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
- JMX建立远程连接只需要填写
即可ip:port