java性能分析--可视化完全体分析工具【jvisualvm】

509 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第16天,点击查看活动详情

前面基本将jvm自带的监控工具都学习了一遍,本篇我们学习最后一个jvm自带的工具jvisualvm,这是一个可视化图形工具。

jvisualvm

jdk自带的监控jvm的可视化图形工具,可以用来监控jvm参数,监控cpu,线程,内存以及类加载情况,同时可以用来分析堆转储文件,当然也可生成堆转储文件。

通常我们是在windows上开启此工具进行jvm监控,对于服务器可以通过远程进行监控。

远程监控

本文主要关注远程监控,需要java服务开启相应配置,与前面学习jconsole时的配置是相通的,如下所示:

参数:

-Dcom.sun.management.jmxremote=true
# 服务器ip
-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx
# 设置jconsole连接的端口
-Dcom.sun.management.jmxremote.port=8090
# 是否使用账号密码
-Dcom.sun.management.jmxremote.authenticate=false 
# 关闭ssl
-Dcom.sun.management.jmxremote.ssl=false 

启动命令如下所示:

nohup java -Dcom.sun.management.jmxremote=true -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx -Dcom.sun.management.jmxremote.port=8090 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar -Xms1g -Xmx1g weather-forecast-0.0.1-SNAPSHOT.jar>/dev/null &

在windows机器jdk的安装目录,bin目录下,找到jvisualvm.exe,双击打开:

image.png

本地会直接显示出我们当前电脑上运行的java程序,点击进去即可查看其图形信息。

我们重点关注远程连接:

  • 添加远程主机

    image.png

  • 添加JMX连接

    image.png

    我们在启动jar包是配置不需要任何的验证,所以只需要输入ip、端口即可: image.png

主要监控参数

下面来看看主要能帮助我们获得哪些性能参数:

  • 概述: image.png

    如上图所示,主要能看到:

    • jdk版本,路径
    • jvm参数
    • 系统参数
  • 监视 image.png

    如上图所示,主要为我们提供实时的:

    • cpu使用情况,垃圾回收的活动情况
    • 堆空间,元空间的内存使用情况
    • 类加载数量
    • 线程数量,峰值、总数、守护线程数等
  • 线程 image.png

    如上图所示,包含线程的实时活动状态,提供活跃线程和完成线程的筛选。

  • 抽样器 image.png

    用于采集CPU和内存的性能数据。

  • Visual GC

    image.png

    这才是我们分析jvm内存以及GC情况的关键视图。

    • 如下实时监控整个堆内存的使用情况:

      image.png

    • 如下所示,分别展示编译数据、类加载数据、gc时间和耗时、伊甸园区内存数据、幸存者0和幸存者1的数据,老年代内存变化数据,元空间内存使用数据 image.png

总结

通过jvisualvm这个工具我们基本可以,轻而易举的获取前面所学习的所有工具,为我们提供的jvm相关参数,且通过图形化的方式展示出来,非常有助于帮助我们分析服务性能。

但是,在某些环境是不允许我们开启JMX访问的,还是要依托于前面学习的工具。