JVM监控工具有哪些

文章目录

    • 1. jps_查看JVM进程ID(Java Virtual Machine Process Status Tool)
    • 2. jinfo_查看和调整JVM参数
    • 3. jstat_统计内存和GC信息(Java Virtual Machine statistics monitoring tool)
    • 4. jmap_查看和转储堆快照(Java Memory Map)
    • 5. jstack_生成线程快照
  • 2. 图形化监控工具
    • 2.1 jconsole_图形化的分析工具
    • 2.2 jvisualvm_强大的图形化分析工具,推荐
    • 第三方监控工具

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参数。

下图是设置OOM时导出快照文件的路径:
JVM监控工具有哪些_第1张图片
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

你可能感兴趣的:(JVM)