在了解一些JVM的基础之上,我们在给系统定位问题的时候呢,还需要特别好的工具来帮助我们进行分析和查找问题。JDk安装完成后,在${JAVA_HOME}/bin目录下,是java自带的一些监控工具。

JConsoleJMCJVisualVM性能测试用哪个监控jvm最好_Java

1、jps:虚拟机进程状况工具

     jps:显示当前系统的java进程情况

     jps [options]  [hostid]

选项

作用

-q

只输出 LVMID,省略主类的名称

-m

输出虚拟机启动时候传递给 main方法的参数

-l

输出类的全名

-v

输出虚拟机进程启动时 JVM参数

     以下示例:

        

JConsoleJMCJVisualVM性能测试用哪个监控jvm最好_java_02

       

JConsoleJMCJVisualVM性能测试用哪个监控jvm最好_Java_03

2、jstat:虚拟机统计信息

     jstat:用于监视虚拟机各种运行状态信息,包括类加载、内存、垃圾收集器、JIT编译等运行数据

     命令格式:

      jstat [option vmid [interval[s|ms] [count]]

     

选项

作用

-class

监视类加载、卸载数量、总空间及类加载所耗费的时间

-gc

监视java堆状况,包括Eden区、2个survivor区、老年代、永久代等的容量、已用空间、GC时间合计等信息

-gcutil

监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比

-gccapacity

监视内容与-gc基本相同,但输出主要关注java堆各个区域使用到的最大和最小空间

       jstat –gc 4988 100 2 每100毫秒查询一次进程4988垃圾收集状况,一共查询2次。


       jstat –gcutil 4988

      

JConsoleJMCJVisualVM性能测试用哪个监控jvm最好_Java_04

3、jinfo: Java配置信息工具  

    jinfo 实时查看和调整虚拟机各项参数

   命令格式:

    jinfo [option] pid

    例如:

    jinfo -flags pid 查看jvm参数

    jinfo -sysprops pid查看java系统参数


4、jmap:java内存映像工具

        JVM Memory Map命令用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError参数来让虚拟机出现OOM的时候自动生成dump文件。 jmap不仅能生成dump文件,还可以查询finalize执行队列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等

5)jstack:Java堆栈跟踪工具

         Jstack命令用于生成虚拟机当前时刻的线程快照。线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源(数据库连接、网络资源、设备资源)导致的长时间等待等都是导致线程长时间停顿的常见原因。

         命令格式:

         jstack[option] vmid

        

选项

作用

-F

当正常输出的请求不被响应时,强制输出线程堆栈

-l

除堆栈外,显示关于锁的附加信息

-m

如果调用到本地方法的话,可以显示c/c++的堆栈

 

6)VisualVM

界面化管理,提供很多插件,需要可以安装插件。