持续创作,加速成长!这是我参与「掘金日新计划 · 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,双击打开:
本地会直接显示出我们当前电脑上运行的java程序,点击进去即可查看其图形信息。
我们重点关注远程连接:
-
添加远程主机
-
添加JMX连接
我们在启动jar包是配置不需要任何的验证,所以只需要输入ip、端口即可:
主要监控参数
下面来看看主要能帮助我们获得哪些性能参数:
-
概述:
如上图所示,主要能看到:
- jdk版本,路径
- jvm参数
- 系统参数
-
监视
如上图所示,主要为我们提供实时的:
- cpu使用情况,垃圾回收的活动情况
- 堆空间,元空间的内存使用情况
- 类加载数量
- 线程数量,峰值、总数、守护线程数等
-
线程
如上图所示,包含线程的实时活动状态,提供活跃线程和完成线程的筛选。
-
抽样器
用于采集CPU和内存的性能数据。
-
Visual GC
这才是我们分析jvm内存以及GC情况的关键视图。
-
如下实时监控整个堆内存的使用情况:
-
如下所示,分别展示编译数据、类加载数据、gc时间和耗时、伊甸园区内存数据、幸存者0和幸存者1的数据,老年代内存变化数据,元空间内存使用数据
-
总结
通过jvisualvm这个工具我们基本可以,轻而易举的获取前面所学习的所有工具,为我们提供的jvm相关参数,且通过图形化的方式展示出来,非常有助于帮助我们分析服务性能。
但是,在某些环境是不允许我们开启JMX访问的,还是要依托于前面学习的工具。