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日
  • 相关阅读:
    flex + bison multiple parsers
    Educational Codeforces Round 95 (Rated for Div. 2)
    python学习笔记 day20 序列化模块(二)
    python学习笔记 day20 常用模块(六)
    python 学习笔记 常用模块(五)
    python学习笔记 day19 常用模块(四)
    python学习笔记 day19 常用模块(三)
    python学习笔记 day19 常用模块(二)
    python学习笔记 day19 作业讲解-使用正则表达式实现计算器
    python学习笔记 day19 常用模块
  • 原文地址:https://www.cnblogs.com/zhangwenhao/p/3755487.html
Copyright © 2011-2022 走看看