• JDK自带工具jps,jstat,jmap,jconsole使用


    jps

    与ps命令类似:

    ps -ef|grep java

    用来显示本地的java进程,查看本地执行着几个java应用,并显示进程号。

    [root@SE43 ~]# jps   //仅仅显示进程号
    23813 Jps
    710 Bootstrap
    792 Bootstrap
    [root@SE43 ~]# jps -v    //显示jvm參数
    23852 Jps -Denv.class.path=.:/usr/jdk1.6.0_21/lib/dt.jar:/usr/jdk1.6.0_21/lib/tools.jar -Dapplication.home=/usr/jdk1.6.0_21 -Xms8m
    710 Bootstrap -Xms2048m -Xmx2048m -XX:NewRatio=2 -XX:PermSize=256M -XX:MaxPermSize=512M -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file=/root/zhusj/apache-tomcat-6.0.18_1/conf/logging.properties -Dcom.sun.management.jmxremote.port=8119 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.endorsed.dirs=/root/zhusj/apache-tomcat-6.0.18_1/endorsed -Dcatalina.base=/root/zhusj/apache-tomcat-6.0.18_1 -Dcatalina.home=/root/zhusj/apache-tomcat-6.0.18_1 -Djava.io.tmpdir=/root/zhusj/apache-tomcat-6.0.18_1/temp


     

    jstat

    非常强大的监视jvm内存工具。可用来查看堆内各个部分的使用量,以及载入类的数量。使用时,需指定java进程号。一般使用 -gcutil 查看gc情况。

    [root@SE43 ~]# jstat -class 710   //显示载入class的数量,及所占空间等信息
    Loaded  Bytes  Unloaded  Bytes     Time   
    11242 24450.0       41    65.8      30.25


     

    jstat -compiler pid:显示VM实时编译的数量等信息。
    jstat -gc pid:能够显示gc的信息。查看gc的次数及时间。当中最后五项,各自是young gc的次数,young gc的时间,full gc的次数,full gc的时间。gc的总时间。

    jstat -gccapacity pid:能够显示VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量。PGCMX显示的是perm的内存最大使用量。PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。

    S0  — Heap上的 Survivor space 0 区已使用空间的百分比
    S1  — Heap上的 Survivor space 1 区已使用空间的百分比
    E   — Heap上的 Eden space 区已使用空间的百分比
    O   — Heap上的 Old space 区已使用空间的百分比
    P   — Perm space 区已使用空间的百分比
    YGC — 从应用程序启动到採样时发生 Young GC 的次数
    YGCT– 从应用程序启动到採样时 Young GC 所用的时间(单位秒)
    FGC — 从应用程序启动到採样时发生 Full GC 的次数
    FGCT– 从应用程序启动到採样时 Full GC 所用的时间(单位秒)
    GCT — 从应用程序启动到採样时用于垃圾回收的总时间(单位秒)

    jstat -compiler pid:显示VM实时编译的数量等信息。


    jstat -gc pid:能够显示gc的信息,查看gc的次数及时间。

    当中最后五项,各自是young gc的次数。young gc的时间。full gc的次数,full gc的时间。gc的总时间。
    jstat -gccapacity pid:能够显示VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量。PGCMX显示的是perm的内存最大使用量。PGC是当前新生成的perm内存占用量。PC是但前perm内存占用量。

    S0  — Heap上的 Survivor space 0 区已使用空间的百分比
    S1  — Heap上的 Survivor space 1 区已使用空间的百分比
    E   — Heap上的 Eden space 区已使用空间的百分比
    O   — Heap上的 Old space 区已使用空间的百分比
    P   — Perm space 区已使用空间的百分比
    YGC — 从应用程序启动到採样时发生 Young GC 的次数
    YGCT– 从应用程序启动到採样时 Young GC 所用的时间(单位秒)
    FGC — 从应用程序启动到採样时发生 Full GC 的次数
    FGCT– 从应用程序启动到採样时 Full GC 所用的时间(单位秒)
    GCT — 从应用程序启动到採样时用于垃圾回收的总时间(单位秒)

    [root@SE43 ~]# jstat -gcutil 710    //gc的统计信息
      S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT 
      0.00  15.69  80.03  38.70  33.30    123   21.421     1    0.817   22.238
    [root@B1943 ~]#jstat -gcutil 710 1000 5    //每1000毫秒打印一次,共5次


    jmap

    能够输出某个java进程内存内对象的情况,甚至能够将VM 中的heap,以二进制输出成文本。

    [root@B1943 ~]# jmap -histo 710 >mem.txt    //可使用文本对照工具对照出GC回收了哪些对象
    该文件里内容如:
    num #instances #bytes class name
    <pre class="plain" name="code">----------------------------------------------
    4:  1202692  67350752 java.io.ObjectStreamClass$WeakClassKey
    
    
    [root@B1943 ~]#jmap -dump:format=b,file=mem.bin 710    //将该进程heap输出到mem.bin文件里,使用二进制形式。该文件可供其它分析工具使用,如eclipse memory analyser
    //注:jmap使用的时候jvm是处在假死状态的。仅仅能在服务瘫痪的时候为了解决这个问题来使用。否则会造成服务中断


     jconsole、jvisualvm

    http://jiajun.iteye.com/blog/810150

        个人觉得 jvisualvm就是jconsole的升级版。

    能够监视、观察java程序的情况。

        也能够监视tomcat,这里记录下监视tomcat的方法。

         监视tomcat须要改动bin/catalina.sh文件:在 Execute The Requested Command前面加上例如以下配置

    CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=8799
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false"
    

    重新启动tomcat后就能够被jvisualvm监视了。





  • 相关阅读:
    读REDIS数据结构
    一致性哈希虚节点解决雪崩问题
    TCP的建立和关闭
    nginx和apache的比较
    进程和线程的区别
    acm过河卒
    搭建centos7 的php环境
    navicat 中 oracle数据传输到mysql上
    安装虚拟机精简版centos7
    整合tomcat的一些配置
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5222938.html
Copyright © 2020-2023  润新知