1、概述

  熟悉java开发的人应该都知道在jdk的bin目录下有许多的工具,这些工具主要用于监视虚拟机和故障处理。这些故障处理工具被Sun公司称作为“礼物”附赠给JDK的使用者,并在软件的使用说明中把它们生命为“没有技术支持并且是实验性质的”的产品,但事实上,这些工具都非常稳定并且功能强大,能在处理应用程序性能问题、定位故障时发挥很大的作用。

2、命令行工具

2.1、jps:虚拟机进程状况工具

  jps(JVM process Status Tool)命令虽然比较单一,确实我们平常使用频率最高的JDK命令行工具,它的作用是列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在类)名称以及这些进程的本地虚拟机唯一ID

  命令格式:

    jps   [option] [hostid]

jps工具主要选项
选项 作用
-q 只输出LVMID,省略主类的名称
-m  输出虚拟机进程启动时传递给主类main()函数的参数
-l  输出主类的全名,如果进程执行的是jar包,输出jar路径
-v  输出虚拟机进程启动是的jvm参数

2.2、jstat:虚拟机统计信息监视工具

  jstat(JVM statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类加载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形界面,值提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具

命令格式:

  jstat [option vmid [interval [s|ms]  [count]]]

  interval:查询时间间隔

  count:查询次数

 如果省略interval和count 参数,则默认只查询一次。假设需要每250ms查询一次进程32587的垃圾收集情况,一共查询20次,那么命令应该是:

  jstat -gc 32587 2590 20

jstat工具主要选项
选项  作用
-class  监视类装载、卸载数量、总空间以及所耗费的时间
-gc  监视java堆状况,包括Eden区、两个Supervisor区、老年代、永久代等的容量、已用空间、gc时间合计等信息
-gccapacity  监视内容与-gc基本一致,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil  监视内容与-gc基本一致,但输出主要关注已使用空间占总空间的百分比
-gccause  与-gcutil功能一样,但是会额外输出GC产生的原因
-gcnew  监视新生代GC情况
-gcnewcapacity  监视内容与-gcnew基本一致,但输出主要关注使用到的最大、最小空间
-gcold  监视老年代GC情况
-gcoldcapacity  监视内容与-gcold基本一致,但输出主要关注使用到的最大、最小空间
-gcmetacapacity  输出永久代使用的最大、最小空间
-compiler  输出JIT编译器编译过的方法、耗时等信息
-printcompilation  输出已经被JIT编译的方法

各工具选项输出内容详解  

-class Option:

列名  描述
Loaded  加载class的数量
Bytes  所占用空间大小
unloaded  未加载class的数量
Bytes  未加载占用空间
Time  执行类加载和卸载操作的时间。

-gc Option:

列名  描述
S0C  Supervisor0当前的容量(KB)
S1C  Supervisor1当前的容量(KB)
S0U  Survivor space 0 使用的容量(KB)
S1U  Survivor space 1 使用的容量(KB)
EC  Eden space 当前的容量(KB)
EU  Eden space 使用的容量(KB)
OC  old space当前的容量(KB)
OU  old space使用的容量(KB)
PC  permanent space当前的容量(KB)
PU  permanent space使用的容量(KB)
YGC  young generation垃圾回收的次数
YGCT  young generation垃圾回收的时间
FGC  full GC次数
FGCT  full GC时间
GCT  总的垃圾回收时间

            

  

    

-gccapacity Option

列名  描述
NGCMN  新生代最小容量(KB)
NGCMX  新生代最大容量(KB)
NGC  新生代当前容量(KB)
S0C  Supervisor0当前的容量(KB)
S1C  Supervisor1当前的容量(KB)
EC  Eden space 当前的容量(KB)
OGCMN  老年代最小容量(KB)
OGCMX  老年代最大容量(KB)
OGC  老年代当前容量(KB)
OC  老年区当前容量(KB)
PGCMN  永久代最小容量(KB)
PGCMX  永久代最大容量(KB)
PGC  当前永久代容量(KB)
PC  当前永久区容量(KB)
YGC  Young generation 垃圾回收的次数
FGC  Full GC次数

-gcutil Option

列名  描述
S0  S0区使用百分比
S1  S1区使用百分比
E  Eden 区使用百分比
O  Old区使用百分比
P  Permanent  区使用百分比
YGC  young generation垃圾回收次数
YGCT  young generation垃圾回收时间
FGC  full GC次数
FGCT  full GC时间
GCT  总共的垃圾回收时间

-gccause Option

列名  描述
LGCC  上一次产生gc的原因
GCC  当前gc原因

-gcnew

列名  描述
S0C  survivor space 0当前容量(KB)
S1C  survivor space 1当前容量(KB)
S0U  survivor space 0使用容量(KB)
S1U  survivor space 1使用容量(KB)
TT  阀值, 用于控制对象在新生代存活的最大次数
MTT  最大阀值
DSS  预期的survivor 大小(KB)
EC  当前Eden区的容量(KB)
EU  Eden区使用的容量(KB)
YGC  young generation垃圾回收次数
YGCT  young generation垃圾回收时间

-gcnewcapacity

列名  描述
NGCMN             new generation最小容量(KB)
NGCMX      new generation最大容量(KB)
NGC      new generation当前容量(KB)
S0CMX  survivor space 0最大容量(KB)
S0C  survivor space 0当前容量(KB)
S1CMX  survivor space 1最大容量(KB)
S1C  survivor space 1当前容量(KB)
ECMX  eden space 最大容量(KB)
EC  eden space 当前容量(KB)
YGC  young generation GC次数
FGC  Full GC次数

-gcold

列名  描述
MC  方法区容量(KB)
MU  方法区当前使用容量(KB)
CCSC  压缩类空间容量(KB)
CCSU  压缩类空间当前使用容量(KB)
OC  old space当前容量(KB)
OU  old space使用容量(KB)
YGC  young generation GC 次数
FGC  full GC次数
FGCT   full GC时间
GCT  总的gc时间

-gcoldcapacity

列名  描述
OGCMN  old generation最小容量(KB)
OGCMX  old generation最大容量(KB)
OGC  old generation当前容量(KB)
OC  old space容量(KB)
YGC  young generation GC次数
FGC   full GC次数
FGCT   full GC时间
GCT  总的gc时间

-gcmetacapacity

列名  描述
MCMN  最小元数据容量(KB)
MCMX  最大元数据容量(KB)
MC  当前元数据空间大小(KB)
CCSMN  最小压缩类空间大小(KB)
CCSMX  最大压缩类空间大小(KB)
CCSC  当前压缩类空间大小(KB)
YGC  young generation GC次数
FGC   full GC次数
FGCT  full GC时间
GCT  总的gc时间

-compiler

列名  描述
Compiled  编译任务执行次数
Failed  编译任务执行失败次数
Invalid  编译任务执行失效数量
Time  编译任务消耗时间
FailedType  最后一个编译失败任务的类型
FailedMethod  最后一个编译失败任务所在的类及方法

-printcompilation

列名  描述
Compiled  最近编译方法的数量
Size  最近编译方法的容量(KB)
Type  最近编译方法的编译类型
Method  方法名标识

jdk命令行工具(一)的更多相关文章

  1. JVM-JDK命令行工具

    JDK命令行工具 当我们进入JDK的安装目录里面的/bin目录,会发现有很多小工具,有我们熟悉的也经常用的java,javac,也有很多我们不怎么用到很陌生的工具.下面看看哪些平时不怎么用到的工具吧. ...

  2. JVM性能监控工具(一)-jdk命令行工具

    转载:http://blog.csdn.net/top_code/article/details/51456186 当系统出bug需要定位问题的时候,知识.经验是关键基础,数据是依据,工具是运用知识处 ...

  3. JVM调优前戏之JDK命令行工具---jhat

    在JDK的命令行中,一般开发人员最耳熟能详的肯定就是java,javac,javap等常用命令,不过在jdk/bin下还有许多其他的命令行工具,它们被用来监测JVM运行时的状态,下面我们来详细解读一下 ...

  4. JVM调优前戏之JDK命令行工具---jstack

    在JDK的命令行中,一般开发人员最耳熟能详的肯定就是java,javac,javap等常用命令,不过在jdk/bin下还有许多其他的命令行工具,它们被用来监测JVM运行时的状态,下面我们来详细解读一下 ...

  5. Java之jdk命令行工具详解

    JPS---虚拟机进程状况工具 常用的参数: -l 输出Java应用程序的main class的完整包 -q 仅显示pid,不显示其它任何相关信息 -m 输出传递给main方法的参数 -v 输出传递给 ...

  6. JDK命令行工具

    jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机各项参数 jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapd ...

  7. jdk命令行工具系列

    虚拟机堆转储快照分析工具使用jmap等方法生成java的堆文件后jhat:虚拟机堆转储快照分析工具 导出程序执行的堆信息 jps jps -l jmap -dump:format=b,file=D:/ ...

  8. jdk命令行工具:jstat与jmap

    转自文章:http://blog.csdn.net/gzh0222/article/details/8538727 C:\Users\Administrator\Desktop>jstat -g ...

  9. JDK的命令行工具

    Jcmd:综合工具 jcmd -l  列出当前运行的所有虚拟机 参数-l表示列出所有java虚拟机,针对每一个虚拟机,可以使用help命令列出该虚拟机支持的所有命令 jcmd [pid] help j ...

随机推荐

  1. Python all() 函数

    Python all() 函数  Python 内置函数 描述 all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False. ...

  2. AFNetworking 不支持 text/plain,unacceptable content-type: text/plain

    1. 用AFNetworkingPOST传递参数(获取微博的accessToken)的时候,具体代码如下: AFHTTPSessionManager *session = [AFHTTPSession ...

  3. 关于网页头图标ico的问题

    今天同事问了我一个比较奇怪的问题,对于我来说,可能和编码没什么关系,但是确实是头一次注意到,所以把问题记录了下来,方便以后积累经验. 问题就是: 在本地的网页中设置了头图标 <link rel= ...

  4. 此实现不是Windows平台FIPS验证的加密算法的一部分

    运行wpf程序,出现错误“此实现不是Windows平台FIPS验证的加密算法的一部分”. 解决方法: 1.在window中打开功能里输入regedit,回车打开注册器: 2.进入如下路径中 HKEY_ ...

  5. Interceptor for {http://cxf.liuyang.com/}IHiServiceService has thrown exception, unwinding now org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader.

    Jquery同域访问:客户端连接服务器访问跨域访问:通过本地html文档,浏览器点击开访问(jquery不支持此访问) 用域名的方式访问http://localhost:8080/CXF_09_jqu ...

  6. Oracle学习笔记(十)

    光标(游标)概念引入 就是一个结果集(查询或者其他操作返回的结果是多个时使用)定义一个光标 cursor c1 is select ename from emp: 从光标中取值 打开光标: --ope ...

  7. fakeapp, faceswap, deepfacelab等deepfakes换脸程序的简单对比

    https://deepfakes.com.cn/index.php/95.html https://www.cnblogs.com/zackstang/p/9011753.html

  8. Jmeter Cookie管理器 获取JSESSIONID

    1.打开jmeter.抓包添加Web请求后,添加Cookie管理器.直接添加就行.值要不要都一样 添加值:${COOKIE_JSESSIONID 域:${server} 2.点击载入到当前脚本 3.到 ...

  9. Task的运行原理和工作窃取(work stealing)

    在net4.0以前,当调用ThreadPool.QueueUserWorkItem方法往线程池中插入作业时,会把作业内容(其实就是一个委托)放到线程池中的一个全局队列中,然后线程池中的线程按照先进先出 ...

  10. vs的 Avalon 自动补全

    以VS2013为例: 1.关闭 Visual Studio 2.打开 C:/Program Files (x86)/Microsoft Visual Studio 12.0/Common7/Packa ...