常用工具
- JDK常用的一些工具都在jdk安装包的bin目录下.常用的一些工具以及作用如下图所示

使用方式
jps
jps列出当前系统中所有的Java进程jps -l输出应用程序main class的完整package名或者应用程序的jar文件完整路径名jps -v输出传递给JVM的参数,也就是jar包的运行参数.

jmp
jmap -heap pid打印堆的摘要信息,包括GC算法、堆配置信息和各内存区域使用情况

jmap -clstats pid打印类加载器信息

jmap -finalizerinfo pid: 打印等待终结的对象信息

jmap -dump:format=b,file=heapdump.phrof pid:生成堆转储快照dump文件。可以使用jhat去分析这个快照文件.


jinfo
jinfo -flags pid查看启动时的VM参数.

jstack
jstack pid打印程序的堆栈信息,可以打印出线程的堆栈,检测死锁很好用

- 检测cpu高的进程
- top查看cpu占用高的进程,获取进程pid
top -H -p pid获取cpu占用高的线程idprintf "%x\n" id将线程id转为16进制数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即可

1607

被折叠的 条评论
为什么被折叠?



