Skip to content

Commit cdc1b06

Browse files
committed
JVM监控和诊断概述jps、jstak、jstack、jinfo、jmap
1 parent 1edec31 commit cdc1b06

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

Java_JVM_Monitor/README.md

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
## JVM监控和诊断概述jps、jstak、jstack、jinfo、jmap ##
2+
程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志、堆dump文件、线程dump文件、GC日志等。通过虚拟机监控和诊断工具可以帮忙我们快速获取、分析需要的数据,进而提高问题解决速度。可以使用图形化工具如:jconsole,jvisualvm,或者命令进行监控和诊断命令。 本文将介绍虚拟机常用监控和问题诊断命令工具的使用方法,主要包含以下工具:
3+
4+
jps 显示系统中所有Hotspot虚拟机进程
5+
jstat 收集Hotspot虚拟机各方面运行数据
6+
jstack 显示虚拟机的线程栈信息
7+
jinfo 显示虚拟机的配置信息
8+
jmap 用于生成虚拟机的内存快照信息
9+
10+
### 命令介绍 ###
11+
12+
#### 1).jps 命令 ####
13+
JVM Process Status Tool,该命令用于列出正在运行的虚拟机进程,显示main类的名称和虚拟机进程id。该命令受当前用户的访问权限影响,比如linux下非root用户只列出当前用户启动的虚拟机进程。
14+
15+
命令格式:
16+
17+
jps [options] [hostid]
18+
19+
常用参数:
20+
-l 输出主类全名
21+
-v 输出虚拟机进程启动的jvm参数
22+
-m 输出启动时传递给main函数的参数
23+
24+
#### 2).jstack 命令 ####
25+
Stack Trace for Java,用于生成虚拟机当前的线程快照信息,包含每一条线程的堆栈信息。该命令通常用于定位线程停顿原因,当出现线程停顿时,可通过stack查看每个线程的堆栈信息,进而分析停顿原因。
26+
27+
命令格式:
28+
jstack [ option ] pid
29+
30+
常用参数:
31+
-l 除堆栈外,显示锁的附加信息
32+
-F 当请求不被响应时,强制输出线程堆栈
33+
-m 混合模式,打印java和本地C++调用的堆栈信息
34+
35+
#### 3) jstat命令 ####
36+
JVM Statistics Monitoring Tool,用于监控各种运行状态信息的命令。在只有文本控制台的环境中(如企业中的生产环境),该工具非常有用。 可以用来显示系统中类装载、垃圾回收、运行期编译状况等运行数据。
37+
38+
命令格式:
39+
jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
40+
vmid表示虚拟机唯一标识符,如果是本地虚拟机进程,与LVMID一致,通常为本地虚拟机进程号。
41+
interval表示查询间隔时间,count表示查询次数。如果省略interval和count参数,表示查询一次。
42+
43+
常用参数:
44+
class 类装载相关信息.
45+
compiler JIT编译器编译过的方法、耗时等.
46+
gc java堆信息和垃圾回收状况.
47+
gccapacity 关注java堆各个区的最大和最小空间.
48+
gccause 类似gcutil,额外输出导致上一次gc的原因.
49+
gcnew 新生代gc状况.
50+
gcnewcapacity 关注新生代gc使用的最大和最小空间.
51+
gcold 老年代gc状况.
52+
gcoldcapacity 关注老年代gc使用的最大和最小空间.
53+
gcpermcapacity 关注持久代gc使用的最大和最小空间.
54+
gcutil 关注已使用空间占总空间比例.
55+
printcompilation 输出已经被JIT编译的方法.
56+
57+
#### 4) jinfo命令 ####
58+
Configuration Info for Java,用于查看和修改虚拟机的各项参数信息。
59+
60+
命令格式:
61+
62+
jinfo [ option ] pid
63+
常用参数:
64+
-flag name 打印虚拟机该参数对应的值.
65+
-flag [+\-]name 使该参数生效或失效.
66+
-flag name=value 修改相应参数的值.
67+
-flags 打印传给jvm的参数值.
68+
-sysprops 打印System.getProperties()信息.
69+
70+
#### 5) jmap命令 ####
71+
Memory Map for Java,可以产生堆dump文件,查询堆和持久代的详细信息等。
72+
73+
命令格式:
74+
75+
jmap [ option ] pid
76+
常用参数:
77+
-dump 生成堆dump文件,格式为: -dump:[live,]format=b,file=<filename>
78+
-heap 显示java堆的详细信息,包括垃圾回收期、堆配置和分代信息等
79+
-histo 显示堆中对象的统计信息,包括类名称,对应的实例数量和总容量
80+
-permstat 统计持久代中各ClassLoader的统计信息。
81+
82+
#### 6) jhatk命令 ####
83+
Jvm Heap Analysis Tool, 与jmap一起使用
84+
85+
示例:
86+
87+
jhat dump.tmp
88+
Reading from dump.tmp...
89+
Dump file created Tue Jun 28 13:55:09 CST 2016
90+

0 commit comments

Comments
 (0)