JVM常用工具

287 阅读2分钟
  1. jconsole

    JConsole工具是JDK自带的可视化监控工具。查看java应用程序的运行概况、监控堆信息、永久区使用 情况、类加载情况等。

    命令行中输入:jconsole

    image

  2. jvisualvm

    image

    • 监控本地Java进程 可以监控本地的java进程的CPU,类,线程等。

    • 监控远端Java进程

      比如监控远端tomcat,演示部署在阿里云服务器上的tomcat

      (1)在visualvm中选中“远程”,右击“添加”

      (2)主机名上写服务器的ip地址,比如31.100.39.63,然后点击“确定”

      (3)右击该主机“31.100.39.63”,添加“JMX”[也就是通过JMX技术具体监控远端服务器哪个Java进程]

      (4)要想让服务器上的tomcat被连接,需要改一下 bin/catalina.sh 这个文件

      (5)在 ../conf 文件中添加两个文件jmxremote.access和jmxremote.password

      mxremote.access 文件内容:

        guest readonly
        manager readwrite
      

      jmxremote.password 文件内容:

        guest guest
        manager manager
      

      授权: chmod 600 jmxremot

      (6)将连接服务器地址改为公网ip地址

      hostname -i 查看输出情况 172.26.225.240 172.17.0.1 vim /etc/hosts

      172.26.255.240 31.100.39.63

      (7)设置上述端口对应的阿里云安全策略和防火墙策略

      (8)启动tomcat,来到bin目录 ./startup.sh

      (9)查看tomcat启动日志以及端口监听

        tail -f ../logs/catalina.out 
        lsof -i tcp:8080
      

      (10)查看8998监听情况,可以发现多开了几个端口

        lsof -i:8998 得到PID
        netstat -antup | grep PID
      

      (11)在刚才的JMX中输入8998端口,并且输入用户名和密码则登录成功

        端口:8998 用户名:manager 密码:manager
      
  3. Arthas

    github地址:github.com/alibaba/art… 文档:alibaba.github.io/arthas/

    Arthas 是Alibaba开源的Java诊断工具,采用命令行交互模式,是排查jvm相关问题的利器。

    image

常用命令

命令 说明
version 查看arthas版本号
help 查看命名帮助信息
cls 清空屏幕
session 查看当前会话信息
quit 退出arthas客户端
dashboard 当前进程的实时数据面板
thread 当前JVM的线程堆栈信息
jvm 查看当前JVM的信息
sysprop 查看JVM的系统属性
sc 查看JVM已经加载的类信息
dump dump已经加载类的byte code到特定目录
jad 反编译指定已加载类的源码
monitor 方法执行监控
watch 方法执行数据观测
trace 方法内部调用路径,并输出方法路径上的每个节点上耗时
stack 输出当前方法被调用的调用路径
  1. MAT

    Java堆分析器,用于查找内存泄漏

    Heap Dump,称为堆转储文件,是Java进程在某个时间内的快照

    下载地址 :www.eclipse.org/mat/downloa…

    获取Dump文件:

    • 手动:jmap -dump:format=b,file=heap.hprof 44808

    • 自动:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof

  2. 在线分析工具 gceasy.io