JDK命令行工具

  1. jps命令

    列出所有Java进程,输出如下:

jps -q  只输出进程id
jps -m 输出传递给Java进程(主函数)的参数
jps -m -l -l用于输出主函数的完整路劲
jps -m -l -v -v显示传递给JVM的参数

2.jstat命令

可以观察Java应用程序运行时信息的工具,可以查看堆信息的详细情况

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

option解释:

-class 显示ClassLoader的相关信息
-compiler 显示JIT编译的相关信息
-GC
与GC相关的堆信息

-gccause 垃圾收集相关信息(同-gcutil),同时显示最后一次或当前正在发生的垃圾收集的诱发原因
-gcnew
新生代信息


-gcnewcapacity

新生代大小与使用情况
-gcold 老年代和永久代的信息
-gcoldcapacity 老年代大小
-gcpermcapacity 永久代大小
-gcutil 垃圾收集信息
-printcompilation 输出JIT编译的方法信息

-t 参数可以在输出信息前加上一个Timestamp列,显示程序运行时间。

-h 在周期性数据输出时,输出多少行数据后,跟着输出一个表头信息。

interval 输出统计数据的周期,单位毫秒。

count指定一共输出多少次数据。

例如:

(1)进程7572 的ClassLoader的相关信息,每秒钟统计一次,输出2次。

loaded:载入类的数量。            Bytes:载入类的合计大小。

Unloaded:卸载类的数量 。       Bytes:卸载类的合计大小。

Time:加载和卸载类所花费的时间。

(2)查看JIT编译信息

Compiled:编译任务执行的次数。              Failed:编译失败的次数

Invalid:编译不可用的次数。                      FailedType:最后一次编译失败的类型。

FailedMethod:最后一次编译失败的类名和方法名。

(3)与GC相关的堆信息

S0C s0(from)的大小(KB) S1C s1(from)的大小(KB) S0U
s0(from)已使用空间(KB)

EC eden区的大小(KB) EU eden区已使用空间(KB) S1U s1(from)已使用空间(KB)
OC 老年代大小(KB) OU 老年代已使用空间(KB) PC 永久区大小(KB)
YGC 新生代GC次数 YGCT 新生代GC耗时 PU 永久区已使用大小(KB)
FGC full GC次数 FGCT full GC耗时 GCT GC总耗时

(4)与gccapacity相关,包括了各个代的最值,单位(KB)。

NGCMN 新生代最小值 NGCMX 新生代最大值 NGC 当前新生代大小
OGCMN 老年代最小值 OGCMX 老年代最大值
PGCMN 永久代最小值 PGCMX 永久代最大值

(5)显示最近一次GC的原因及当前GC的原因

◇LGCC:上次GC的原因。                               ◇GCC:当前GC的原因。

图中显示,最近一次GC是由于显示的System.gc()调用所引起的。当前时刻未进行GC。

(6)-gcnew查看新生代的一些详细信息。

◇TT:新生代对象晋升到老年代对象的年龄。

◇MTT:新生代对象晋升到老年代对象的年龄最大值。

◇DSS:所需的survivor区大小。

(7)-gcnewcapacity详细输出新生代各个区的大小信息:

◇S0CMX:s0区的最大值(KB)。

◇S1CMX:s1区的最大值(KB)。

◇ECMX:eden区的最大值(KB)。

(8)-gcold展现老年代GC的概况。

(9)-gcutil:展示GC回收相关信息。

S0 s0区使用的百分比 S1 s1区使用的百分比 E eden区使用的百分比
O old区使用的百分比 P 永久区使用的百分比

3.jinfo:查看运行时某一个JVM参数的实际取值,甚至可以在运行时修改部分参数,并使之立即生效。

jinfo <option> <pid>

option说明:

☆-flag<name>:打印指定JVM的参数值。

☆-flag[+|-]<name>:打印指定JVM参数的布尔值。

☆-flag<name>=<value>:设置指定JVM的参数值。

(1)jinfo -flags pid打印该进程的JVM参数

(2)显示是否打印GC详细信息,下例显示通过jinfo对PrintGCDetails参数的修改,他可以在java程序运行时关闭或者打开这个开关。

4.jmap:生成Java应用程序的堆快照和对象的统计信息;

使用:

jmap [ option ] pid

jmap [ option ] executable core

jmap [ option ] [[email protected]]remote-hostname-or-IP

1)options:

executable Java executable from which the core dump was produced.(可能是产生core dump的java可执行程序)core 将被打印信息的core dump文件

remote-hostname-or-IP 远程debug服务的主机名或ip

server-id 唯一id,假如一台主机上多个远程debug服务

2)基本参数:

☆-dump:[live,]format=b,file=<filename> :使用hprof二进制形式,输出jvm的heap内容到文件=. live                                      子选项是可选的,假如指定live选项,那么只输出活的对象到文件.

☆-finalizerinfo :打印正等候回收的对象的信息.

☆-heap :打印heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况.

☆-histo[:live] :打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上                                       缀”*”. 如果live子参数加上后,只统计活的对象数量.

☆-permstat :打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父                            classloader和加载的class数量. 另外,内部String的数量和占用内存数也会打印出来.

☆-F :强迫在pid没有相应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.

☆-h | -help :打印辅助信息

☆-J :传递参数给jmap启动的jvm.

(1)jmap -histo pid >路劲 :生成pid的Java程序对象统计信息,并输出到文件中。

输出了内存中的实例数量和合计。

(2)jmap -dump:format=b,file=路劲 pid:导出Java应用程序的当前堆快照,要使用Visual VM打开,或者使用jhat命令。

5.jhat命令

用于分析Java应用程序的堆快照内容:

下例是分析上文生成的堆快照

jhat分析完成后,使用HTTP服务器展示其分析结果,在浏览器中访问http://127.0.0.1:7000

jhat服务器显示了所有非平台类信息。点击链接进入,可以查看类的超类、ClassLoader以及该类的实例等信息。

页面底部,jhat为开发人员提供了其他查询方式

通过这些链接,开发者可以进一步查看所有类信息、所有类的实例数量以及实例的具体信息。

最后有一个链接指向OQL查询界面

在方框中输入查询信息,查询格式可以点击OQL Help进入进行参考,如下图所示,

在方框中输入查询语句可以查询到相应的信息:如下图所示

6.jstack命令

导出java应用程序的线程堆栈

使用: jstack [-l] <pid> [文件路劲]

时间: 2024-10-09 06:11:08

JDK命令行工具的相关文章

JDK命令行工具整理

1.javac 编译的Java程序,生成.class文件 2.javaw 跟java命令相对的,可以运行.class文件,主要用来执行图形界面的java程序运行java命令时,会出现并保持一个console窗口,程序中的信息可以通过System.out在console内输出,而运行javaw,开始时会出现console,当主程序调用之后,console就会消失: javaw 大多用来运行GUI程序 3.javah C 头文件和 Stub 文件生成器.javah 从 Java 类生成 C 头文件和

jdk命令行工具的基本使用

jps:可以列出正在运行的虚拟机进程 主要选项 样例: jstat:用于监视虚拟机各种运行状态信息的命令行工具.它可以显示本地或者远程虚拟机进程中的类装载.内存.垃圾收集.JIT编译等运行数据 命令格式:jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]命令选项 使用样例:每250ms查询一次进程pid 9968的垃圾收集情况,一共查询10次 显示百分比 jinfo:作用是

基于JDK命令行工具的监控

JVM的参数类型 JVM参数类型大体分为三种: 标准参数,基本每个版本的JVM都有的参数,比较稳定不变 X参数,非标准化的参数,每个JVM版本的都有些不一样,但是变化较小 XX参数,非标准化的参数,相对不稳定,每个JVM版本的变化都比较大,主要用于JVM调优和Debug 常见的标准参数: -help -server -client -version -showversion -cp -classpath 常见的X参数: -Xint : 解释执行 -Xcomp : 第一次使用就编译成本地代码 -X

jdk命令行工具:jstat与jmap

转自文章:http://blog.csdn.net/gzh0222/article/details/8538727 C:\Users\Administrator\Desktop>jstat -gcutil 21640 S0 S1 E O P YGC YGCT FGC FGCT GCT 43.33 0.00 94.55 32.10 9.34 20 0.494 0 0.000 0.494 C:\Users\Administrator\Desktop>jmap -histo 21640 >hi

JDK的命令行工具

jps:虚拟机进程状况工具 jps(JVM Process Status Tool)可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier,LVMID).虽然功能比较单一,但它是使用频率最高的JDK命令行工具,因为其他的JDK工具大多需要输入它查询到的LVMID来确定要监控的是哪一个虚拟机进程.对于本地虚拟机进程来说,LVMID与操作系统的进程ID(

JVM虚拟机性能监控与调优(JDK命令行、JConsole)

很多资料在介绍JDK命令行工具时并不是在Java8环境下,因此还在使用过时的永久区系列的参数,给一些读者造成困难. Java8使用Metaspace(元空间)代替永久区,对于64位平台,为了压缩JVM对象中的_klass指针的大小,引入了类指针压缩空间(Compressed Class Pointer Space) .关于这点,可以参考博客https://blog.csdn.net/liang0000zai/article/details/51168095. 1. JDK命令行工具 在JDK的开

1.5Java语言(JDK中的命令行工具)

1.3.4 配置环境变量path(1)  在dos命令行中敲入javac,出现错误提示.  错误原理:当前执行的程序在当前目录下如果不存在,windows系统会在系统中已有的一个名为path的环境变量指定的目录中查找.如果还没有找到,就出现以上的错误提示.  所以进入到jdk安装路径\bin目录下,执行javac.看到javac参数提示信息. 1.5Java语言(JDK中的命令行工具),布布扣,bubuko.com

jdk自带常用命令行工具使用

下面是笔者整理的jdk自带的常用命令行工具的使用方法,全部原创,转载请注明出处,并贴上链接,谢谢! jps命令使用 jstat命令使用 jinfo命令使用 jmap命令使用 jhat命令使用 jstack命令使用 jcmd命令使用

JDK的命令行工具系列 (一) jps、jstat

概述 在我们进行故障定位和性能分析时, 可以使用Java Dump(也叫Dump文件)来帮助排查问题, 它记录了JVM运行期间的内存占用和线程执行等情况.其中Heap Dump文件是二进制格式, 它保存了某一时刻的系统信息.虚拟机属性.完整的线程Dump.所有类和对象的状态等, 是指定时刻的java堆栈的快照; Thread Dump文件是纯文本格式, 它保存了java应用程序各线程在某一时刻的运行位置. 在%JAVA_HOME%\lib目录下, 有一些诸如jps.exe.jstack.exe.