天天看点

JVM系列---JDK工具

文章目录

    • 常用工具
    • 使用方式
      • jps
      • jmp
      • jinfo
      • jstack
      • jvisualVM

常用工具

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

使用方式

jps

  1. jps

    列出当前系统中所有的Java进程
  2. jps -l

    输出应用程序main class的完整package名或者应用程序的jar文件完整路径名
  3. jps -v

    输出传递给JVM的参数,也就是jar包的运行参数.
JVM系列---JDK工具

jmp

  • jmap -heap pid

    打印堆的摘要信息,包括GC算法、堆配置信息和各内存区域使用情况
JVM系列---JDK工具
  • jmap -clstats pid

    打印类加载器信息
JVM系列---JDK工具
  • jmap -finalizerinfo pid

    : 打印等待终结的对象信息
JVM系列---JDK工具
  • jmap -dump:format=b,file=heapdump.phrof pid

    :生成堆转储快照

    dump

    文件。可以使用

    jhat

    去分析这个快照文件.
JVM系列---JDK工具
JVM系列---JDK工具

jinfo

  • jinfo -flags pid

    查看启动时的VM参数.
JVM系列---JDK工具

jstack

  • jstack pid

    打印程序的堆栈信息,可以打印出线程的堆栈,检测死锁很好用
JVM系列---JDK工具
  • 检测cpu高的进程
  1. top查看cpu占用高的进程,获取进程pid
  2. top -H -p pid

    获取cpu占用高的线程id
  3. printf "%x\n" id

    将线程id转为16进制数
  4. 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
           
JVM系列---JDK工具
  • JMX建立远程连接只需要填写

    ip:port

    即可
JVM系列---JDK工具
jvm