Java性能分析工具介绍

一、总体介绍
     
 
二、命令行工具
    1、jps
         类似于ps,列出正在运行的虚拟机进程。显示如下内容:虚拟机执行主类、LVMID(非常重要,其他命令都
         需要输入该id)
         命令格式:
               jps[ options]
 
        
           VMID = [protocol:][//] lvmid[@ hostname[: port]/ servername]
 
        查询实例:
              
 
    2、jstat
         可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。是定位虚拟机问题的首选          工具
         命令格式:
               jstat[ option vmid[ interval[ s| ms][ count]]]
 
         
 
             重点介绍下 -gc: 该命令可以查看虚拟机的核心部件:垃圾收集的情况(内存占用、gc时间...)            
            S0C:年轻代中第一个survivor(幸存区)的容量 (字节)

            S1C:年轻代中第二个survivor(幸存区)的容量 (字节)

            S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)

            S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

            EC:年轻代中Eden(伊甸园)的容量 (字节)

            EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)

            OC:Old代的容量 (字节)

            OU:Old代目前已使用空间 (字节)

            PC:Perm(持久代)的容量 (字节)

            PU:Perm(持久代)目前已使用空间 (字节)

            YGC:从应用程序启动到采样时年轻代中gc次数

            YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

            FGC:从应用程序启动到采样时old代(全gc)gc次数

            FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)

            GCT:从应用程序启动到采样时gc用的总时间(s)

         
  3、jinfo      
       实时地查看和调整虚拟机各项参数
       命令格式:
             jinfo[ option] pid
       
       查询实例:
                 
 
4、jmap 
     用于生成堆转储快照
     命令格式:
            jmap[ option] vmid
           
    查询实例:
         
 
5、jstack
    生成虚拟机当前时刻的线程快照
    命令格式:
           jstack[ option] vmid
    查询实例:
           
 
三、可视化工具
       VisualVM
               可视化工具完成的功能与上述java命令差不多,就是更加直观.
               插件中心地址:http://visualvm.java.net/pluginscenters.html
         通过几张截图了解下功能:
          
        
 
四、第三方工具
       1、btrace
            Btrace是由sundararajan在开发的一个开源项目,始创于2009年6月,是一种动态跟踪分析一个运行中的Java应用程序的工具。
            
       2、greys-anatomy
            greys-anatomy是btrace的扩展工具,对常用的功能进行的封装。而且提供交互式命令行界面完成相应的操作。 
            安装:curl -sLk http://ompc.oss.aliyuncs.com/greys/install.sh|ksh
          
            使用步骤:
             第一步:启动greys,进入命令行界面
                   
             第二步:执行跟踪注入命令,即可获取正在运行方法的各种信息
                    举例:数据门户首页Index类完成后,输出context中的empId
           
             第三步:ctrl +D后继续输入其他监控命令
            
         功能:
                 monitor: 对匹配的方法调用进行监控
                 profiler:对正则匹配的方法进行埋点监控。统计整个调用链路上的性能开销
                 watch:观察匹配方法的内存对象
                             入参、返回值、异常、当前对象
                 tt: 拥有时间维度的watch命令
                 jstack:查看某个方法的调用链路
                 这里只是列举了部分功能,详细介绍文档: https://github.com/oldmanpushcart/greys-anatomy/wiki/Commands#monitor

猜你喜欢

转载自rainforc.iteye.com/blog/2217598