• Java之jdk命令行工具详解


            JPS---虚拟机进程状况工具

    常用的参数:

    -l 输出Java应用程序的main class的完整包

    -q 仅显示pid,不显示其它任何相关信息

    -m 输出传递给main方法的参数

    -v 输出传递给JVM的参数。在诊断JVM相关问题的时候,这个参数可以查看JVM相关参数的设置

    注:这个命令相信大多数java程序员都知晓、查找当前运行的java进程、当需要kill掉某个进程的时候可以用到。

    bogon:~ chengluchao$ jps -l
    14064 org.jetbrains.idea.maven.server.RemoteMavenServer
    14049 
    14082 org.jetbrains.jps.cmdline.Launcher
    5036 com.baiwang.UserServiceApplication
    14095 jdk.jcmd/sun.tools.jps.Jps

                              jstat ---虚拟机统计信息监视工具

    jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ] ,可以用来查看堆信息,垃圾回收信息等,详细使用命令可以通过man jstat命令来查看。

    查看垃圾回收信息

    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 : 最大持有次数限制

     

    jinfo java配置信息工具

    观察运行中的java程序的运行环境参数:参数包括Java System属性和JVM命令行参数、也可以设置参数的值,并使之立即生效。

     

                                jmap Java内存映像工具

    可以生成java应用程序的堆快照和对象统计信息。

    下面的命令可以看到java进程中某一时刻的类示例数量以及所占的字节数。

    打印进程的类加载器和类加载器加载的持久代对象信息,输出:类加载器名称、对象是否存活(不可靠)、对象地址、父类加载器、已加载的类大小等信息。

    1、使用jmap -heap pid查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和各代中堆内存使用情况。

    2、使用jmap -histo[:live] pid 查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象

     

    也可以将当前程序的堆快照导出到文件中:

              jstack命令(Java Stack Trace)

    可以用来查看java应用程序的堆栈信息。

    jstack -l <pid>

    可以用来查看进程中线程状态,检测死锁等。

    jstack可以定位到线程堆栈,根据堆栈信息可以定位到具体代码,所以它在JVM性能调优中使用得非常多。下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有ps、top、printf、jstack、grep。

    1.:先找出Java进程ID,我部署在服务器上的Java应用名称为mrf-center:

    ps -ef | grep mrf -center | grep -v grep

    得到进程ID为21711

    2.:找出该进程内最耗费CPU的线程 top -Hp pid

    TIME列就是各个Java线程耗费的CPU时间,CPU时间最长的是线程ID为21742的线程

    printf"%x "21742得到21742的十六进制值为54ee,下面会用到。

    3.:jstack上场、它用来输出进程21711的堆栈信息,然后根据线程ID的十六进制值grep,如下:

    http://mp.weixin.qq.com/s/C2lREdybWKP9-gqDu9yZkw

  • 相关阅读:
    LifeRay学习记录
    jQuery选择器
    JavaScript中for..in循环陷阱
    Python课程回顾(day18)
    Python课程回顾(day17)
    Python课程回顾(day15)
    Python课程回顾(day14)
    Python课程回顾(day13)
    Python课程回顾(day12)
    Python课程回顾(day11)
  • 原文地址:https://www.cnblogs.com/chenglc/p/8746131.html
Copyright © 2020-2023  润新知