zoukankan      html  css  js  c++  java
  • java虚拟机性能监控与故障处理实践

    java虚拟机性能监控与故障处理实践

    联系作者: zhangwenhao3@sina.com
    请保留文章出处:http://www.cnblogs.com/zhangwenhao/p/3747837.html

    jps命令

    jps命令类似linux的ps命令,可以列出当前的系统中的所有虚拟内存。同时也可以显示线程的执行类。命令格式
    jps [选项] [主机id(使用rmi的时候填写)]
    选项如下:

    -q:只输出id,不输出类名。

    -m:输出传递给main()方法的参数。

    -l:输出执行类的类名,或者执行jar包路径。

    -v:虚拟机进程启动时候的启动参数。

    本文来源于博客园,原始链接

    jstat命令

    用于间监控虚拟机各种运行状态的命令。比如类装载、内存、垃圾收集和JIT编译等运行状态。用于查找虚拟机性能的工具。
    命令格式:
    jstat [选项 VMID [interval[s|ms] [count]]]
    VMID参数在本机调试的时候,这个id就是jps命令出来的id.
    如果是远程rmi的虚拟机进程,格式是[protocol:][//]lvmid(远程id)[@hostname[:port]/servername]
    inerval和count分别表示多久查询一次,和查询总的次数。
    选项如下:

    -class:类装载、卸载数量、总空间和类装载的耗时。

    -gc:监视java堆状况。包含Eden区、2个survivor区、老年代、永久呆的容量、已用空寂和GC时间统计。

    -gccapacity:监视java堆状况。包含各个对的使用的最大和最小空间。

    -gcutil:监视java堆状况。显示已使用和总空间的百分比。

    -gccause:输出-gcutil。同时输出上一次gc产生的原因。

    -gcnew:监视新生代堆的gc情况。

    -gcnewcapacity:输出新生代使用的最大和最小空间。

    -gcold:监视老年代堆的gc情况。

    -gcoldcapacity:输出老年代使用的最大和最小空间。

    -gcpermcapacity:输出永久代使用的最大和最小空间。

    -compiler:输出JIT编译过的方法和耗时。

    -printcompilation:输出已经被JIT编译过的方法。

    jinfo命令

    jinfo用于查看和调整虚拟机的各项参数。 命令格式:
    jinfo [选项] [pid]
    选项如下:

    -flag:查询虚拟机参数。

    -sysprops:打印系统参数。

    -flag [+|-]name 或 -flag name=value:修改运行期间可以修改的虚拟机参数。

    jmap命令

    用于生产堆转储快照(dump文件),同时可以查询空间使用率等详细信息。有的选手win下不起作用。
    命令格式:
    jinfo [选项] vmid
    选项如下:

    -dump:生产快照。格式是:-dump:[live,]format=b,file=<filename>,其中live查杀用于说明是否指dump出存活的参数。

    -heap:显示堆详细信息。win下面不能使用这个命令。

    -histo:显示对象统计信息,包括类、实例数量和合集容量。

    -F:强制生成快照。

    -finalizerinfo: -permstat:

    jhat命令

    用于http方式分析dump。一般不用这个,有很多其他的分析工具。执行这个命令后,在浏览器输入http://localhost:7000/就可以查看。 命令格式:
    jhat dump文件的路径

    jstack命令

    jstack命令用于生成当前虚拟机时空的线程快照,包含当前虚拟机每一条线程正在执行的方法堆栈的集合。 可以用于定位线程出现挺短的原因,比如死锁、死循环、请求外部资源等待时间过长等。 命令格式:
    jstack [选项] vmid
    选项包含:

    -F:强制输出线程堆栈。

    -l:除堆栈外,显示关于锁的附件信息。

    -m:如果调用了本地方法的话,可以显示c/c++的堆栈。

    列表名称说明(来源于互联网,作为参考)

    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)
    NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
    NGCMX:年轻代(young)的最大容量 (字节)
    NGC:年轻代(young)中当前的容量 (字节)
    OGCMN:old代中初始化(最小)的大小 (字节)
    OGCMX:old代的最大容量 (字节)
    OGC:old代当前新生成的容量 (字节)
    PGCMN:perm代中初始化(最小)的大小 (字节)
    PGCMX:perm代的最大容量 (字节)
    PGC:perm代当前新生成的容量 (字节)
    S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
    S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
    E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
    O:old代已使用的占当前容量百分比
    P:perm代已使用的占当前容量百分比
    S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
    S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
    ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
    DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
    TT: 持有次数限制
    MTT : 最大持有次数限制

    javap命令

    javap命令可以用来分析.class文件。 命令格式:
    javap [选项] 类名(可以不带后缀,带后缀不知道能不能执行)
    选项包含:

    -verbose:输出字节码内容。

    笔者也是边学边写代码,边更新这个博客的,很多没注意到到的地方,请大家多指教。
    未完,更新中。2014年5月29日
  • 相关阅读:
    celery 大量消息的分布式系统 定时任务
    小程序开发-生活娱乐两不误
    linux安装selenium+chrome+phantomjs
    CENTOS 7 安装 TINYPROXY 代理服务器
    JVM(三) 垃圾回收时间点和垃圾收集器
    JDK12 concurrenthashmap源码阅读
    JVM(二) 对象存活判断和垃圾回收算法
    java 线程池(2)
    JVM(一)
    java 线程池(1)
  • 原文地址:https://www.cnblogs.com/zhangwenhao/p/3755487.html
Copyright © 2011-2022 走看看