JVM常用工具

jconsole

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

命令行中输入:jconsole

image

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

Arthas

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

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

![image](http://java-run-blog.oss-cn-zhangjiakou.aliyuncs.com/9389beed4ff44547bb550114549a7a25.png

)

常用命令

命令 说明
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 输出当前方法被调用的调用路径

MAT

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

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

下载地址 :https://www.eclipse.org/mat/downloads.php

获取Dump文件:

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

- 自动:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof
  1. 在线分析工具 gceasy.io

文章作者: 凌云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 凌云 !
  目录