jps 进程状态工具

类似与linuxps命令,但是它只列出系统中的Java应用程序。 通过jps命令可以方便的查看Java进程的启动类、传入参数和Java虚拟机参数等信息。

1
2
3
4
5
6
7
8
9
jps [options] [hostid]

options:
-q 不输出类名、Jar名和传入main方法的参数
-l 输出main类或Jar的全限名
-m 输出传入main方法的参数
-v 输出传入JVM的参数
hostid: 远程服务器地址,jps 支持远程调用,不输入则默认当前主机。
- [protocol:][[//]hostname][:port][/servername]

Java程序在启动时,会在java.io.tmpdir指定临时文件夹中生成一个hsperfdata_User的文件夹,文件夹中储存以进程pid作为文件名的文件,通过解析对应文件可以或得对应进程的系统的参数等。

jstat 统计信息监控工具

jstat是定位jvm性能的常用工具,可以监控虚拟机的运行状态信息,如进程中发生的类装载、内存、垃圾收集、jit编译等运行数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
option:
-class #用于查看类加载情况的统计
Loaded : 已经装载的类的数量
Bytes : 装载类所占用的字节数
Unloaded:已经卸载类的数量
Bytes:卸载类的字节数
Time:装载和卸载类所花费的时间

-compiler #显示JIT编译的相关信息
Compiled:编译任务执行数量
Failed:编译任务执行失败数量
Invalid :编译任务执行失效数量
Time :编译任务消耗时间
FailedType:最后一个编译失败任务的类型
FailedMethod:最后一个编译失败任务所在的类及方法

-gc #查看JVM中堆的垃圾收集情况的统计
S0C:年轻代中第一个survivor(幸存区)的容量
S1C:年轻代中第二个survivor(幸存区)的容量
S0U :年轻代中第一个survivor(幸存区)目前已使用空间
S1U :年轻代中第二个survivor(幸存区)目前已使用空间
EC :年轻代中Eden(伊甸园)的容量
EU :年轻代中Eden(伊甸园)目前已使用空间
OC :Old代的容量
OU :Old代目前已使用空间
MC:metaspace(元空间)的容量
MU:metaspace(元空间)目前已使用空间
YGC :从应用程序启动到采样时年轻代中gc次数
YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

-gccapacity #查看新生代、老生代及持久代的存储容量情况
NGCMN :年轻代(young)中初始化(最小)的大小
NGCMX :年轻代(young)的最大容量
NGC :年轻代(young)中当前的容量
S0C :年轻代中第一个survivor(幸存区)的容量
S1C : 年轻代中第二个survivor(幸存区)的容量
EC :年轻代中Eden(伊甸园)的容量
OGCMN :old代中初始化(最小)的大小
OGCMX :old代的最大容量
OGC:old代当前新生成的容量
OC :Old代的容量
MCMN:metaspace(元空间)中初始化(最小)的大小
MCMX :metaspace(元空间)的最大容量
MC :metaspace(元空间)当前新生成的容量
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC :从应用程序启动到采样时年轻代中gc次数
FGC:从应用程序启动到采样时old代(全gc)gc次数

-gcmetacapacity 显示metaspace的大小
MCMN:最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC :从应用程序启动到采样时年轻代中gc次数
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

-gcnew #查看新生代垃圾收集的情况
S0C :年轻代中第一个survivor(幸存区)的容量
S1C :年轻代中第二个survivor(幸存区)的容量
S0U :年轻代中第一个survivor(幸存区)目前已使用空间
S1U :年轻代中第二个survivor(幸存区)目前已使用空间
TT:持有次数限制
MTT:最大持有次数限制
DSS:期望的幸存区大小
EC:年轻代中Eden(伊甸园)的容量
EU :年轻代中Eden(伊甸园)目前已使用空间
YGC :从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

-gcnewcapacity #用于查看新生代的存储容量情况
NGCMN :年轻代(young)中初始化(最小)的大小
NGCMX :年轻代(young)的最大容量
NGC :年轻代(young)中当前的容量
S0CMX :年轻代中第一个survivor(幸存区)的最大容量
S0C :年轻代中第一个survivor(幸存区)的容量
S1CMX :年轻代中第二个survivor(幸存区)的最大容量
S1C:年轻代中第二个survivor(幸存区)的容量
ECMX:年轻代中Eden(伊甸园)的最大容量
EC:年轻代中Eden(伊甸园)的容量
YGC:从应用程序启动到采样时年轻代中gc次数
FGC:从应用程序启动到采样时old代(全gc)gc次数

-gcold #用于查看老生代及持久代发生GC的情况
MC :metaspace(元空间)的容量
MU:metaspace(元空间)目前已使用空间
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
OC:Old代的容量
OU:Old代目前已使用空间
YGC:从应用程序启动到采样时年轻代中gc次数
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

-gcoldcapacity #用于查看老生代的容量
OGCMN :old代中初始化(最小)的大小
OGCMX :old代的最大容量
OGC :old代当前新生成的容量
OC :Old代的容量
YGC :从应用程序启动到采样时年轻代中gc次数
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

-gcutil #查看新生代、老生代及持久代垃圾收集的情况
S0 :年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1 :年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E :年轻代中Eden(伊甸园)已使用的占当前容量百分比
O :old代已使用的占当前容量百分比
P :perm代已使用的占当前容量百分比
YGC :从应用程序启动到采样时年轻代中gc次数
YGCT :从应用程序启动到采样时年轻代中gc所用时间(s)
FGC :从应用程序启动到采样时old代(全gc)gc次数
FGCT :从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)

-gccause #显示垃圾回收的相关信息(通-gcutil),同时显示最后一次或当前正在发生的垃圾回收的诱因;
LGCC:最后一次GC原因
GCC:当前GC原因(No GC 为当前没有执行GC)

-printcompilation #输出编译的方法信息
Compiled :编译任务的数目
Size :方法生成的字节码的大小
Type:编译类型
Method:类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的

-t: 可以在打印的列加上Timestamp列,用于显示系统运行的时间
-h: 可以在周期性数据数据的时候,可以在指定输出多少行以后输出一次表头
vmid: Virtual Machine ID( 进程的 pid)
interval: 执行每次的间隔时间,单位为毫秒
count: 用于指定输出多少次记录,缺省则会一直打印

jinfo 配置信息

jinfo用来查看正在运行的Java应用程序的扩展参数,包括Java System属性和JVM命令行参数;也可以动态的修改正在运行的 JVM 一些参数。当系统崩溃时,jinfo可以从core文件里面知道崩溃的Java应用程序的配置信息。

1
2
3
4
5
6
7
jinfo [option] pid
option: 无参默认输出全部的参数和系统属性
-flag name 输出对应名称的参数
-flag [+|-]name 开启或者关闭对应名称的参数
-flag name=value 设定对应名称的参数
-flags 输出全部的参数
-sysprops 输出系统属性

jmap 内存映射工具

jmap可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。

1
2
3
4
5
6
7
8
9
10
11
12
jmap [option] <pid>
jmap [option] <executable <core>
jmap [option] [server_id@]<remote server IP or hostname>
option:
heap 显示Java堆详细信息
histo[:live] 显示堆中对象的统计信息
clstats打印类加载器信息
finalizerinfo 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
dump:<dump-options>生成堆转储快照
F 当-dump没有响应时,使用-dump或者-histo参数. 在这个模式下,live子参数无效.
help打印帮助信息
J<flag>指定传递给运行jmap的JVM的参数出处。