知晓JVM系列(三) :常用的JVM监测工具

  JVM监测工具主要有下几种功能:
          1.jvm内部情况分析与了解。
                 对jvm参数、CPU、内存、堆等信息的查看和了解。
          2.性能调优。
                 调整软硬件融合度。
          3.应用运行时问题解决。
                如:
                         OutOfMemoryError,内存不足
                         内存泄露
                         线程死锁
                         锁争用(Lock Contention)
                         Java进程消耗CPU过高

一、可视化监测工具

      1.jvisualvm,是jdk自带的jvm性能监测工具。
                         工具路径:jdk1.7.0_03\bin
                         运行模式:双击运行
                         基础功能:
                               1、可以通过本地/远程管理、监控jvm虚拟机
                               2、可以参考jvm虚拟机参数与系统参数
                               3、可以监测CPU、堆、permGen、类、线程等运行信息,并可以对其操作。如:垃圾回收操作,线程信息查看,堆信息查看。
                         特殊功能:
                               1、可以进行程序应用快照。
                               2 、可以安装其他监测辅助插件。
                               3、性能分析,数据抽样。
jvisualvm界面如下:
知晓JVM系列(三) :常用的JVM监测工具_第1张图片
       2.jconsole,是jdk自带的jvm性能监测工具。
                         工具路径:jdk1.7.0_03\bin
                         运行模式:双击运行
                         基础功能:
                               1、可以通过本地/远程管理、监控jvm虚拟机
                               2、可以参考jvm虚拟机参数与系统参数
                               3、可以监测CPU、堆、permGen、类、线程等运行信息,并可以对其操作。如:垃圾回收操作,线程信息查看,堆信息查看。
                         特殊功能:
                               1、可以查看堆和非堆内存占用情况,查看各代区内存信息。
                               2、可以查看MBean信息。
jconsole的界面如下:
知晓JVM系列(三) :常用的JVM监测工具_第2张图片
         3. YourKit Java Profiler: 是业界领先的Java剖析工具。
                  工具路径: http://www.warezaccess.com/search/yourkit.html 下载相应的版本安装即可。
                                安装方法可以参考以下两篇文章:
                                                        本机windows远程连接到linux服务器上监控java虚拟机的性能 :  http://zhwj184.iteye.com/blog/764575
                                                        本机tomcat安装yourkit插件 :  http://developer.51cto.com/art/201203/326454.htm
                                                       安装yourkit到IDE
                                运行模式:双击运行
                                基础功能:
                               1、可以通过本地/远程管理、监控jvm虚拟机
                               2、可以 看各函数cpu资源消耗比例
                               3、可以监测CPU、内存、类、线程等运行信息。
                         特殊功能:
                               1、GC查看。
                               2. 请求的执行路径查看。
yourkit软件界面如下:
         知晓JVM系列(三) :常用的JVM监测工具_第3张图片
       4. JProbe: 一个企业级的 Java 剖析器。
                    工具路径: http://www.innovatedigital.com/download/JProbe_index.asp 下载相应的版本安装,然后破解。
                         运行模式:双击运行
                                         有 Eclipse 插件
                         基础功能:
                               1、 内存分析、性能分析、
                               2、可以监测CPU、堆、内存、类、线程等运行信息。
                         特殊功能:
                               1、 覆盖分析
                               2、 自动性能分析和度量报告
 jprobe软件界面如下:
        知晓JVM系列(三) :常用的JVM监测工具_第4张图片
    4. jProfiler:JProfiler是一个商业授权的Java剖析工具。
                        工具路径: http://www.ej-technologies.com/products/jprofiler/overview.html下载相应的版本安装,然后破解。
                         运行模式:双击运行
                                         有 Eclipse 插件
                                         具体安装与使用详情请参照: http://www.cnblogs.com/jayzee/p/3184087.html
                                                                            http://blog.csdn.net/djy1135/article/details/2304465
                         基础功能:
                               1、cpu分析、 内存分析、性能分析、
                               2、可以监测CPU、堆、内存、类、线程等运行信息。
                         特殊功能:
                               1、 专用于分析J2SE和J2EE应用程序。
jprofiler的软件界面如下:
                 知晓JVM系列(三) :常用的JVM监测工具_第5张图片
          5. jvmstat    jvmstat是图形版的jstat,由Java 官方提供,目前最新版本为3.0。
                             工具路径: http://www.oracle.com/technetwork/java/jvmstat-142257.html下载相应的版本安装即可。
                             运行模式: 具体安装与使用详情请参照: http://looyo.iteye.com/blog/1871207
                             基础功能:
                               1、cpu分析、 内存分析、性能分析、
                               2、可以监测CPU、堆、内存、类、线程等运行信息。
                             特殊功能:
                               1、 GC监控。
 jvmstat的界面如下:
 知晓JVM系列(三) :常用的JVM监测工具_第6张图片

      Spring Insight
二、基于命令行监测工具
              1.jmap  观察运行中的jvm物理内存的占用情况。
                             工具路径:jdk1.7.0_03\bin
                             运行模式: 命令行
                              命令格式: jmap [ option ] pid

                                               jmap [ option ] executable core

                                                      jmap [ option ] [server-id@]remote-hostname-or-IP

                                      常用命令:jmap -histo  1234(查看 class的实例数目,内存占用,类全名信息) 
                                                      jmap -heap 1234 (查看对内存情况)
                                                      jmap -dump 1234 ( 将内存使用的详细情况输出到文件
                                                       注:1234为需要被打印配相信息的java进程id,使用该分析工具时, jvm会处于假死状态。
                             基础功能:
                               1、 内存分析、类情况查看。

              2. jps  列出所有的jvm实例
                            工具路径:jdk1.7.0_03\bin
                             运行模式: 命令行
                              命令格式: jps [options] [hostid]
                                                       注: 如果不指定hostid就默认为当前主机或服务器。
                                      常用命令:jps -q(查看 pid) 
                                                      jps -m ( 查看传递给main 方法的参数
                                                      jps -l  ( 查看main类或Jar的全限名
                                                      jps   -v (查看 传入JVM的参数
                                                   
                             基础功能:
                               1、 主要用来输出JVM中运行的进程状态信息
              3. jvmtop:  一个轻量级的控制台程序用来监控机器上运行的所有 Java 虚拟机。
                                 运行平台:linux
                                下载地址: http://code.google.com/p/jvmtop/
                                安装命令: wget  http://jvmtop.googlecode.com/files/jvmtop-0.5.0.tar.gz
                                                          tar -zxvf jvmtop-0.5.0.tar.gz
                                 运行命令: ./jvmtop.sh
                                    常用命令: ./jvmtop.sh 3456(查看3456进程) 
              4.jstack  观察jvm中当前所有线程的运行情况和线程当前状态
                                      工具路径:jdk1.7.0_03\bin
                             运行模式: 命令行
                              命令格式: jstack [option] pid
                                                      jstack [option] executable core
                                                      jstack [option] [server-id@]remote-hostname-or-ip
                                      常用命令:jps -q(查看 pid) 
                                                      jstack -m pid( 查看 java native c/c++ 框架的所有栈信息
                                                      jstack -l  pid( 查看 关于锁的附加信息
                                                      jstack   -F pid( ’jstack [-l] pid’ 没有相应的时候强制打印栈信息)         
                             基础功能:
                               1、 主要用来查看某个Java进程内的线程堆栈信息
                 
              5.jstat: JVM统计监测工具
                             工具路径:jdk1.7.0_03\bin
                             运行模式: 命令行
                              命令格式: jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]  
                                      常用命令: jstat -gc  21711   250   4  
                                                     注:vmid是Java虚拟机ID,在Linux/Unix系统上一般就是进程ID。interval是采样时 
                                                          间间隔。count是采样数目。比如下面输出的是GC信息,采样时间间隔为
                                                          250ms,采样数为4      
                             基础功能:
                               1、   观察classloader,compiler,gc相关信息
               6. hprof: 能够展现CPU使用率,统计堆内存使用情况
三、基于java API的方式监控
                  各种JDK自带的剖析工具,包括jps、jstack、jinfo、jstat、jmap、jconsole等,都是基于 JVM Management API 开发的。
                  API: java.lang.management
                   常用api说明:
                      1.HotSpotDiagnostic:非标准的监控JMX
                      2.ClassLoading:加载的类的总体信息
                    3. .Compilation:提供JVM的JIT(Just In Time)编译器(将bytecode编译成native code)的信息
                     4.GarbageCollector:垃圾回收器信息
                    5. MemoryPool:通过该MBean可以了解JVM各内存块的信息
                    6. OperatingSystem:通过该MBean我们可以了解到JVM所运行在的操作系统上的一些相关信息
                    7. Runtime:通过该MBean获取获取到JVM一些相关的信息,通过java.lang.management.RuntimeMXBean可以了解其主要提供的功能。
                  具体情况请查看: http://www.jmatrix.org/jvm/158.html
                                             http://blog.csdn.net/sixianfeng/article/details/5552228
                   两篇博文,讲得很详细。
          参考文章:
                           http://developer.51cto.com/art/201203/326355.htm
                           http://blog.csdn.net/djy1135/article/details/2304465
                           http://josh-persistence.iteye.com/blog/2161848
                           http://hillside.iteye.com/blog/706129
                           http://hbluojiahui.blog.163.com/blog/static/31064767201282091643613/

                           http://blog.csdn.net/feihong247/article/details/7874063
                           http://blog.chinaunix.net/uid-405749-id-3741305.html


                         


你可能感兴趣的:(知晓JVM系列)