JDK自带监控和故障处理常用工具
1.jps jsp可以列出正在运行的虚拟机进程,并显示其执行主类(main函数所在的类)的名称和进程ID。jps命令行参数可以通过下面命令查看:[root@iZ25w1kdi5zZ ~]# jps -helpjps命令主要选项及说明:-q 只输出进程ID的名称,省略主类的名称-m 输出虚拟机进程启动时传递给主类main()函数的参数-l 输出主类的命名,如果进程执行的...
1.jps
jsp可以列出正在运行的虚拟机进程,并显示其执行主类(main函数所在的类)的名称和进程ID。
jps命令行参数可以通过下面命令查看:
[root@iZ25w1kdi5zZ ~]# jps -help
jps命令主要选项及说明:
-q 只输出进程ID的名称,省略主类的名称
-m 输出虚拟机进程启动时传递给主类main()函数的参数
-l 输出主类的命名,如果进程执行的是Jar包,则输出Jar的路径
-v 输出虚拟机进程启动时JVM参数
示例:
[root@iZ25w1kdi5zZ ~]# jps -l
4310 sun.tools.jps.Jps
22336 org.apache.catalina.startup.Bootstrap
2.jstat
jstat是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行状况。在不能使用GUI图形界面的情况下,它将是运行期定位虚拟机问题的首选工具。
jstat命令行参数可以通过下面命令查看:
[root@iZ25w1kdi5zZ ~]# jstat -help
jstat命令主要选项及说明:
-class 监视类装载、卸载数量、总空间及类装载所耗费的时间
-gc 监视Java堆状况,包括Eden区、2个survivor区、老年代、永久代等的容量、已用空间、GC时间等时间
-gccapacity 监视内容与-gc相同,输出主要关注Java堆各个区域使用的最大空间和最小空间
-gcutil 监视内容与-gc基本相同,输出主要关注已使用空间占总空间的百分比
-gccause 与-gcutil功能一样,但会额外输出导致上一次GC产生的原因
-gcnew 监视新生代GC的状况
-gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大空间和最小空间
-gcold 监视老年代GC的状况
-gcoldcapacity 监视内容与-gcold基本相同,输出主要关注使用的最大空间和最小空间
-gcpermcapacity 输出永久代使用的最大空间和最小空间
-compiler 输出JIT编译器编译过的方法、耗时等信息
-printcompilation 输出已经被JIT编译的方法
示例:
[root@iZ25w1kdi5zZ ~]# jstat -gcutil 22336
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 20.31 87.14 76.26 44.72 1475 4.316 2 0.329 4.645
3.jinfo
jinfo命令的作用就是实时地查看和调整虚拟机的各项参数。jinfo可以使用-sysprops选项把虚拟机进程的System.getProperties()的内容打印出来,并且还可以通过-flag选项查询未被显示指定的参数的系统默认值,jps -v只能查看虚拟机启动时显式指定的参数列表。同时,jinfo命令还能够在运行期修改JVM参数,可以使用-flag[+|-]name或-flag name=value来修改一部分运行期可写的虚拟机参数值。
jinfo命令行参数可以通过下面命令查看:
[root@iZ25w1kdi5zZ ~]# jinfo -help
Usage:
jinfo [option] <pid>
(to connect to running process)
jinfo [option] <executable <core>
(to connect to a core file)
jinfo [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server)
where <option> is one of:
-flag <name> to print the value of the named VM flag
-flag [+|-]<name> to enable or disable the named VM flag
-flag <name>=<value> to set the named VM flag to the given value
-flags to print VM flags
-sysprops to print Java system properties
<no option> to print both of the above
-h | -help to print this help message
示例:
[root@iZ25w1kdi5zZ ~]# jinfo -flag SurvivorRatio 22336
-XX:SurvivorRatio=8
4.jstack
5 jmap
jmap命令行参数可以通过下面命令查看:
[root@iZ25w1kdi5zZ ~]# jinfo -help
命令格式:jmap -histo <pid>
说明:查看Java进程中类实例数及占用内存
示例:
[root@iZ25w1kdi5zZ ~]# jmap -histo 27185 > a.txt
[root@iZ25w1kdi5zZ ~]# cat a.txt | head -n 10
## 输出前10行内容
num #instances #bytes class name
----------------------------------------------
1: 201731 96473896 [B
2: 741474 51541440 [C
3: 1148603 36755296 java.util.HashMap$Entry
4: 21087 22643888 [I
5: 693558 16645392 java.lang.String
6: 262665 14709240 com.mysql.jdbc.ConnectionPropertiesImpl$BooleanConnectionProperty
7: 396358 12683456 java.util.Hashtable$Entry
[root@iZ25w1kdi5zZ ~]# cat a.txt | tail -n 10
## 输出最后10行内容
2930: 1 16 scala.collection.mutable.HashMap$
2931: 1 16 kafka.api.ApiUtils$
2932: 1 16 sun.reflect.GeneratedMethodAccessor41
2933: 1 16 org.springframework.boot.context.FileEncodingApplicationListener
2934: 1 16 org.apache.catalina.core.StandardContext$1
2935: 1 16 java.nio.Bits$1
2936: 1 16 org.springframework.core.$Proxy46
2937: 1 16 java.util.Collections$EmptyEnumeration
2938: 1 16 scala.runtime.RichChar$
Total 6313973 395609608
命令格式:jmap -heap <pid>
说明:查看Java进程堆信息
示例:
[root@iZ25w1kdi5zZ ~]# jmap -heap 12751
Attaching to process ID 12751, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.76-b04
using thread-local object allocation.
Parallel GC with 8 thread(s)
Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 6442450944 (6144.0MB)
NewSize = 2147483648 (2048.0MB)
MaxNewSize = 2147483648 (2048.0MB)
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 536870912 (512.0MB)
MaxPermSize = 1073741824 (1024.0MB)
G1HeapRegionSize = 0 (0.0MB)
Heap Usage:
......
6.btrace
7.JConsole
8.VisualVM
更多推荐
所有评论(0)