JVM监控工具有哪些

本文介绍了JVM的各种监控工具,包括jps、jinfo、jstat、jmap和jstack,详细阐述了它们的功能和使用场景。此外,还讨论了图形化工具jconsole和jvisualvm,以及第三方监控工具如jprofilter、perfino等,为Java开发者提供全面的JVM监控解决方案。

1. jps_查看JVM进程ID(Java Virtual Machine Process Status Tool)

       jps可以查看当前系统正在运行的java虚拟机进程、主类。其他命令基本都要依赖此命令来确定要监控哪一个虚拟机进程。在一个项目中有多个JVM运行时,比windows自带的任务管理器里查看方便点,当然可以结合起来使用。
       jps -l查看jvm进程和主类。-v可以查看虚拟机启动时显示指定的jvm参数。
       jps参考文章
在这里插入图片描述

2. jinfo_查看和调整JVM参数

jinfo 可以实时查看正在运行的 java 应用程序的系统属性,JVM参数和命令行参数:在这里插入图片描述
在这里插入图片描述
也可以动态的修改JVM参数,下图是设置OOM时导出快照文件的路径:
在这里插入图片描述
jinfo参考文章

3. jstat_统计内存和GC信息(Java Virtual Machine statistics monitoring tool)

       Jstat可以用来监控本地或远程虚拟机各种运行状态的命令行工具,包括了对类装载、内存、垃圾收集、jit编译的监控。是在没有GUI界面的服务器定位虚拟机entity的常用工具。

在这里插入图片描述
jstat参考文章
jstat参考文章

4. jmap_查看和转储堆快照(Java Memory Map)

       可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小等等。可以使用jmap生成Heap Dump,也可以使用kill -3“恐吓”下虚拟机来获取堆快照
jmap -dump:format=b,file=d:\dump1215.bin 8804导出快照文件到d:\dump1215.bin

jmap参考文章
jmap参考文章

        jhat_解析堆转储文件(JVM Heap Analysis Tool)和jmap 命令搭配使用,可以用来分析 jmap 生成的堆转储快照。先用jmapdump出文件,然后用jhat来分析,可以通过浏览器来访问。
       但不推荐使用,因为jhat命令特别耗费CPU和内存,不会在服务器上使用,一般要把dump文件拷贝出来在自己电脑上分析,但其实既然拷贝出来了就不用这个命令行工具了,比如mat工具就比jhat好用很多。

5. jstack_生成线程快照

       jstack会生成JVM当前时刻的线程快照,然后我们可以通过它查看某个Java进程内的线程堆栈信息,通常来说,当线上CPU使用率较高的时候,我们可以通过jstack查询占用CPU较高的一些线程的使用情况,比如发生了死锁,线程阻塞等相关操作。一般情况下,jstack会配合其他命令一块进行操作,比如top,ps等命令。
jstack参考文章

2. 图形化监控工具

2.1 jconsole_图形化的分析工具

       它用于连接正在运行的本地或者远程的JVM,对运行在java应用程序的资源消耗和性能进行监控,并画出大量的图表,提供强大的可视化界面。而且本身占用的服务器内存很小,甚至可以说几乎不消耗。推荐使用jvisualvm
jconsole参考文章

2.2 jvisualvm_强大的图形化分析工具,推荐

       jvisualvm是一个综合性的分析工具,可以认为其整合了jstack、jmap、jinfo等众多调试工具的功能,并以图形界面展示。可以认为jvisualvm是jconsole的升级版。并且jvisualvm支持插件,非常好用。
       从jdk 9开始, visualVM不再集成在JDK中, 需要单独下载安装。下载地址: https://visualvm.github.io/download.html。下载之后,解压到JDK目录下,层级对应覆盖即可。另外idea本身有jvisualvm的插件,可以使用。
jvisualvm参考文章

第三方监控工具

       对jvm监控的常见可视化工具,除了jdk本身提供的Jconsole和visualVm以外,还有第三方提供的jprofilter,perfino,Yourkit,Perf4j,JProbe,MAT等。这些工具都极大的丰富了我们定位以及优化jvm方式。
       这些工具的使用,网上有很多教程提供。对于VisualVm来说,比较推荐使用,它除了对jvm的侵入性比较低以外,还是jdk团队自己开发的,相信以后功能会更加丰富和完善。jprofilter对于第三方监控工具,提供的功能和可视化最为完善,目前多数ide都支持其插件,对于上线前的调试以及性能调优可以配合使用。

       还有阿里巴巴开源的java线上排查利器arthas

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值