JDK安装目录下的bin目录下,有一些命令行工具。 这些工具虽然是.exe结尾(windows环境上),但它们的具体实现在tools.jar中,所以以下两个命令是等价的:
1. jps
2. java -classpath %JAVA_HOME%/lib/tools.jar sun.tools.jps.Jps
1. jps命令(JVM Process Status Tool)
jps命令可以查看系统中的java进程,java进程的启动类,main函数的入参, 传递给JVM的参数。
jps [options] [hostid]
options:
-q: 只输出LVMID, 省略主类的名称
-m:输出虚拟机进程启动时,传递给主类main函数的参数
-l :输出主类的全名,如果进程执行的是jar包,则输出jar的路径
-v :输出JVM虚拟机启动时的JVM参数
2. jstat命令(JVM Statistics Monitoring Tool, 查看运行时的信息)
jstat是一个可以用于观察java应用程序运行时信息的工具。它的功能非常强大,可以通过它,查看堆信息的详细情况。
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
选项option可以由以下值构成
-class :显示classloader的相关信息
-compiler:显示jit编译的相关信息
-printcompilation: 输出jit编译的方法信息
-GC:显示与GC相关的堆信息
-gccapacity:显示各个代的容量及使用情况
-gccause: 显示垃圾收集相关信息(同-gcutil),同时显示最后一次或当前正在发生的垃圾收集的诱发原因。
-gcnew:显示新生代信息
-gcnewcapacity:显示新生代大小与使用情况
-gcold:显示老年代与永久代的信息
-gcoldcapacity:显示老年代的大小
-gcpermcapacity:显示永久代的大小
-gcutil:显示垃圾收集信息
-f 参数可以在输出信息前加一个Timestamp列,显示程序的运行时间
-h参数可以在周期性数据输出时,输出多少行数据后,输出一个表头信息。
interval 参数用户指定输出统计数据的周期,单位毫秒
count用户指定一共输出多少次数据
此命令执行结果中,一些列的说明:
S0C: S0的容量, capacity
S1C: S1的容量
S0U: S0的使用量, used
S1U: S1的使用量
EC: eden的容量
EU: eden的使用量
OC: OU: 老年代的容量,使用量
PC PU: 永久代的容量, 使用量
YGC:Numbers of young generation gc events (minor gc 次数)
YGCT :ygc time 单位:
FGC: fgc 次数
FGCT: fgc 时间, 单位:
gct: 总的gc时间, 单位:
============
S0 — Survivor 0 区已使用空间的百分比
S1 — Survivor 1 区已使用空间的百分比
E — Eden 区已使用空间的百分比
O — Old 区已使用空间的百分比
P — Perm 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)
3. jinfo命令
jinfo命令可以用来查看正在运行的java应用程序的扩展参数,甚至支持在运行时修改部分参数。
jinfo <option> <pid>
-flag <name> : 打印指定JVM的参数值
-flag [+|-] <name> :设置指定JVM参数的布尔值
-flag <name>=<value>:设置指定JVM参数的值
4. jmap命令