赞
踩
jinfo指令 (实时查看和修改JVM的配置参数)
jinfo -flags <pid>
#查看曾经赋过值的一些参数
jinfo -flag 具体参数 <pid>
#查看某个Java进程的具体参数的值
#修改:并不是所有的参数都支持动态修改,参数只有被标记为manageable的flag可以被实时的修改,其实,这个修改能力是极其有限的
#window 可以参看被标记为manageable的参数指令
java -XX:+PrintFlagsFinal -version | grep manageable
jinfo -flag +/-具体参数 <pid>
#修改 boolean类型的值
jinfo -flag 具体参数=具体参数值 <pid>
#修改非boolean类型的值
========== 扩展
java -XX:+PrintFlagsInitial
#查看所有JVM参数启动的初始值
java -XX:+PrintFlagsFinal
#查看所有JVM参数的最终值
java -XX:+PrintCommandLineFlags
#查看那些已经被修改或者JVM设置过的详细的XX参数的名称和值
jmap指令 (导出内存映像文件&内存使用情况)
#查看当前Java进程的heap内存内容
jmap -heap <pid>
#查看当前Java进程的dump内存快照,format=b:以二进制形式 binary, /xx/xx/fileName,输出/xx/xx/的路径dump文件的文件名,-dump:live 只保存堆中存活的对象 jmap -dump:live,format=b,file= /xx/xx/fileName <pid>
#查看所有对象,包括活跃以及非活跃的
jmap -histo <pid> | more
#查看活跃对象
jmap -histo:live <pid> | more
=============补充
jvm配置参数自动导出dump文件
-XX:+HeapDumpOnOutOfMemoryError
-XX:+HeapDumpPath=<filename.hprof>
jhat指令 (JDK自带堆分析工具)
#jhat指令搭配jmap指令使用,使用了jhat指令,就启动了一个http服务,端口是7000,http://localhost:7000/ 就可以在浏览器里分析
#jhat指令在 JDK9、JDK10中已经被删除,而且现在主要用各种工具分析 dump文件
jstack指令 (打印JVM中的线程快照)
jstack命令用于生成虚拟机当前时刻的线程快照
jstack [ options ] pid
-F
#当 jstack [-l] pid 没有响应时,强制打印一个堆栈转储。
-l
#打印关于锁的其他信息,比如拥有的java.util.concurrent ownable同步器的列表。
-m
#打印包含Java和本机C/ C++帧的混合模式堆栈跟踪。
=======补充 ,打印的线程信息的参数
tid: java内的线程id
nid: 操作系统级别线程的线程id
prio: java内定义的线程的优先级
os_prio:操作系统级别的优先级
jcmd (多功能命令行 JDK1.7后新增,可以实现除了jstat之外所有命令的功能)
jcmd -l
#列出所有的jvm进程
jcmd <pid> help
#针对指定的进程,列出支持的所有命令
jcmd pid 具体命令
#显示指定进程的指令命令的数据
jstat指令 :查看Java gc详情
jstat -outputOptions [-t] [-hlines] vmid [interval] [count]]
outputOptions:命令行选项
t:输出时间戳(以jvm启动开始从0统计)
hlines:每输出lines数量的数据后,输出一次header信息
vmid:进程ID
interval:输出的时间间隔,秒或者毫秒
count:输出次数
jstat命令可以内存的统计信息,以及类加载的数量,GC的次数和耗时等。本文使用的是JDK10,不同版本间可能存在差异。
-class: 查看类加载的统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -class 11457 1s 5 Loaded Bytes Unloaded Bytes Time 6886 12668.3 0 0.0 8.16 6886 12668.3 0 0.0 8.16 6886 12668.3 0 0.0 8.16 6886 12668.3 0 0.0 8.16 6886 12668.3 0 0.0 8.16
Loaded: 加载的类的数量
Bytes:加载的类的字节数
Unloaded:未加载的类的数量
Bytes:未加载的类的字节数
Time:加载类的耗时
-compiler:查看编译的统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -compiler 11457 1s 5 Compiled Failed Invalid Time FailedType FailedMethod 3551 0 0 11.43 0 3551 0 0 11.43 0 3551 0 0 11.43 0 3551 0 0 11.43 0 3551 0 0 11.43 0
Compiled:编译数量
Failed:失败的数量
Invalid:无效的数量
Time:编译耗时
FailedType:失败的类型
FailedMethod:失败的方法
-gc: 查看垃圾回收的统计信息 感觉是以kb为单位
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -gc 11457 1s 5 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 1408.0 1408.0 0.0 878.9 11776.0 10748.7 29136.0 19081.8 40192.0 39013.7 4864.0 4431.8 73 0.252 3 0.228 0.480 1408.0 1408.0 0.0 878.9 11776.0 10748.7 29136.0 19081.8 40192.0 39013.7 4864.0 4431.8 73 0.252 3 0.228 0.480 1408.0 1408.0 0.0 878.9 11776.0 10748.7 29136.0 19081.8 40192.0 39013.7 4864.0 4431.8 73 0.252 3 0.228 0.480 1408.0 1408.0 0.0 878.9 11776.0 10748.7 29136.0 19081.8 40192.0 39013.7 4864.0 4431.8 73 0.252 3 0.228 0.480 1408.0 1408.0 0.0 878.9 11776.0 10748.7 29136.0 19081.8 40192.0 39013.7 4864.0 4431.8 73 0.252 3 0.228 0.480
S0C:Survivor0区的容量
S1C:Survivor1区的容量
S0U:Survivor0区的使用容量
S1U:Survivor1区的使用容量
EC:Eden区的容量
EU:Eden区的使用容量
OC:老年代的容量
OU:老年代的使用容量
MC:MetaSpace的容量
MU:MetaSpace的使用容量
CCSC:压缩类空间的容量
CCSU:压缩类空间的使用容量
YGC:Yong GC次数
YGCT:Yong GC耗时
FGC:Full GC的次数
FGCT:Full GC耗时
GCT:垃圾回收总耗时
-gccapacity:堆内存的统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -gccapacity 11457 1s 5 NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC 192.0 84608.0 14592.0 1408.0 1408.0 11776.0 64.0 169344.0 29136.0 29136.0 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3 192.0 84608.0 14592.0 1408.0 1408.0 11776.0 64.0 169344.0 29136.0 29136.0 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3 192.0 84608.0 14592.0 1408.0 1408.0 11776.0 64.0 169344.0 29136.0 29136.0 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3 192.0 84608.0 14592.0 1408.0 1408.0 11776.0 64.0 169344.0 29136.0 29136.0 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3 192.0 84608.0 14592.0 1408.0 1408.0 11776.0 64.0 169344.0 29136.0 29136.0 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3
NGCMN:新生代的最小容量
NGCMX:新生代的最大容量
NGC:新生代的当前容量
S0C:Survivor0区的容量
S1C:Survivor1区的容量
EC:Eden区的容量
OGCMN:老年代的最小容量
OGCMX:老年代的最大容量
OGC:老年代的当前容量,OGC = sum(all OC),对于hotspot虚拟机来说,老年代只有1个,所以OGC = OC
OC:老年代的当前容量
MCMN:Metaspace的最小容量
MCMX:Metaspace的最大容量
MC:Metaspace的当前容量
CCSMN:压缩类空间的最小容量
CCSMX:压缩类空间的最大容量
CCSC:压缩类空间的当前容量
YGC:Yong GC的次数
FGC:Full GC的次数
-gccause: 查看垃圾回收原因的统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -gccause 11457 1s 5 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT LGCC GCC 0.00 62.42 93.28 65.49 97.07 91.11 73 0.252 3 0.228 0.480 Allocation Failure No GC 0.00 62.42 93.28 65.49 97.07 91.11 73 0.252 3 0.228 0.480 Allocation Failure No GC 0.00 62.42 93.28 65.49 97.07 91.11 73 0.252 3 0.228 0.480 Allocation Failure No GC 0.00 62.42 93.28 65.49 97.07 91.11 73 0.252 3 0.228 0.480 Allocation Failure No GC 0.00 62.42 93.28 65.49 97.07 91.11 73 0.252 3 0.228 0.480 Allocation Failure No GC
S0:Survivor0区的使用百分比
S1:Survivor1区的使用百分比
E:Eden区的使用百分比
O:老年代的使用百分比
M:Metaspace的使用百分比
CCS:压缩类空间的使用百分比
YGC:Yong GC的次数
YGCT:Yong GC的耗时
FGC:Full GC的次数
FGCT:Full GC的耗时
GCT:垃圾回收的总耗时
LGCC:上一次垃圾回收的原因
GCC:当前垃圾回收的原因
-gcnew:查看新生代的垃圾回收统计
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -gcnew 11457 1s 5 S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT 1408.0 1408.0 0.0 878.9 2 15 704.0 11776.0 11281.5 73 0.252 1408.0 1408.0 0.0 878.9 2 15 704.0 11776.0 11281.5 73 0.252 1408.0 1408.0 0.0 878.9 2 15 704.0 11776.0 11281.5 73 0.252 1408.0 1408.0 0.0 878.9 2 15 704.0 11776.0 11281.5 73 0.252 1408.0 1408.0 0.0 878.9 2 15 704.0 11776.0 11281.5 73 0.252
S0C:Survivor0区的容量
S1C:Survivor1区的容量
S0U:Survivor0区的使用容量
S1U:Survivor1区的使用容量
TT:新生代对象的存活次数
MTT:新生代对象的最大存活次数
DSS:需要的Survivor容量
EC:Eden区的容量
EU:Eden区的使用容量
YGC:Yong GC的次数
YGCT:Yong GC的耗时
-gcnewcapacity:查看新生代内存的统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -gcnewcapacity 11457 1s 5 NGCMN NGCMX NGC S0CMX S0C S1CMX S1C ECMX EC YGC FGC 192.0 84608.0 14592.0 8448.0 1408.0 8448.0 1408.0 67712.0 11776.0 73 3 192.0 84608.0 14592.0 8448.0 1408.0 8448.0 1408.0 67712.0 11776.0 73 3 192.0 84608.0 14592.0 8448.0 1408.0 8448.0 1408.0 67712.0 11776.0 73 3 192.0 84608.0 14592.0 8448.0 1408.0 8448.0 1408.0 67712.0 11776.0 73 3 192.0 84608.0 14592.0 8448.0 1408.0 8448.0 1408.0 67712.0 11776.0 73 3
NGCMN:新生代的最小容量
NGCMX:新生代的最大容量
NGC:当前新生代的容量
S0CMX:Survivor0区的最大容量
S0C:Survivor0区的当前容量
S1CMX:Survivor1区的最大容量
S1C:Survivor1区的当前容量
ECMX:Eden区的最大容量
EC:Eden区的当前容量
YGC:Yong GC的次数
FGC:Full GC的次数
-gcold: 查看老年代的垃圾回收的统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -gcold 11457 1s 5 MC MU CCSC CCSU OC OU YGC FGC FGCT GCT 40192.0 39013.7 4864.0 4431.8 29136.0 19081.8 73 3 0.228 0.480 40192.0 39013.7 4864.0 4431.8 29136.0 19081.8 73 3 0.228 0.480 40192.0 39013.7 4864.0 4431.8 29136.0 19081.8 73 3 0.228 0.480 40192.0 39013.7 4864.0 4431.8 29136.0 19081.8 73 3 0.228 0.480 40192.0 39013.7 4864.0 4431.8 29136.0 19081.8 73 3 0.228 0.480
MC:MetaSpace的容量
MU:MetaSpace的使用容量
CCSC:压缩类空间的容量
CCSU:压缩类空间的使用容量
OC:老年代的容量
OU:老年代的使用容量
YGC:Yong GC次数
FGC:Full GC的次数
FGCT:Full GC耗时
GCT:垃圾回收总耗时
-gcoldcapacity:查看老年代内存的统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -gcoldcapacity 11457 1s 5 OGCMN OGCMX OGC OC YGC FGC FGCT GCT 64.0 169344.0 29136.0 29136.0 73 3 0.228 0.480 64.0 169344.0 29136.0 29136.0 73 3 0.228 0.480 64.0 169344.0 29136.0 29136.0 73 3 0.228 0.480 64.0 169344.0 29136.0 29136.0 73 3 0.228 0.480 64.0 169344.0 29136.0 29136.0 73 3 0.228 0.480
OGCMN:老年代的最小容量
OGCMX:老年代的最大容量
OGC:老年代的当前容量,OGC = sum(all OC),对于hotspot虚拟机来说,老年代只有1个,所以OGC = OC
OC:老年代的当前容量
YGC:Yong GC的次数
FGC:Full GC的次数
FGCT:Full GC耗时
GCT:垃圾回收总耗时
-gcmetacapacity:查看metaspace内存的统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -gcmetacapacity 11457 1s 5 MCMN MCMX MC CCSMN CCSMX CCSC YGC FGC FGCT GCT 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3 0.228 0.480 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3 0.228 0.480 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3 0.228 0.480 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3 0.228 0.480 0.0 1085440.0 40192.0 0.0 1048576.0 4864.0 73 3 0.228 0.480
MCMN:Metaspace的最小容量
MCMX:Metaspace的最大容量
MC:Metaspace的当前容量
CCSMN:压缩类空间的最小容量
CCSMX:压缩类空间的最大容量
CCSC:压缩类空间的当前容量
YGC:Yong GC的次数
FGC:Full GC的次数
FGCT:Full GC耗时
GCT:垃圾回收总耗时
-gcutil:查看垃圾回收的百分比统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -gcutil 11457 1s 5 S0 S1 E O M CCS YGC YGCT FGC FGCT GCT 0.00 62.42 95.80 65.49 97.07 91.11 73 0.252 3 0.228 0.480 0.00 62.42 95.80 65.49 97.07 91.11 73 0.252 3 0.228 0.480 0.00 62.42 95.80 65.49 97.07 91.11 73 0.252 3 0.228 0.480 0.00 62.42 95.80 65.49 97.07 91.11 73 0.252 3 0.228 0.480 0.00 62.42 95.80 65.49 97.07 91.11 73 0.252 3 0.228 0.480
S0:Survivor0区的使用百分比
S1:Survivor1区的使用百分比
E:Eden区的使用百分比
O:老年代的使用百分比
M:Metaspace的使用百分比
CCS:压缩类空间的使用百分比
YGC:Yong GC的次数
YGCT:Yong GC的耗时
FGC:Full GC的次数
FGCT:Full GC的耗时
GCT:垃圾回收的总耗时
-printcompilation:查看jvm编译方法的统计信息
[root@izbp1chtb8a3vd2mzvuawlz /]# jstat -printcompilation 11457 1s 5 Compiled Size Type Method 3569 79 1 java/util/concurrent/locks/AbstractQueuedSynchronizer doReleaseShared 3569 79 1 java/util/concurrent/locks/AbstractQueuedSynchronizer doReleaseShared 3569 79 1 java/util/concurrent/locks/AbstractQueuedSynchronizer doReleaseShared 3569 79 1 java/util/concurrent/locks/AbstractQueuedSynchronizer doReleaseShared 3569 79 1 java/util/concurrent/locks/AbstractQueuedSynchronizer doReleaseShared
Compiled:最近编译方法的数量
Size:最近编译方法的字节数
Type:最近的编译类型
Method:最近编译的方法
jvm边缘指令(用以辅助jvm指令使用)
#查看各个进程的cpu使用情况,它默认是按cpu使用率由高到低排序的
top
#查看该进程下,各个线程的cpu使用情况
top -Hp pid
#查看当前java进程的堆栈状态
jstack pid
#把这些堆栈信息打到一个文件里
jstack -l [PID] >/tmp/log.txt
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。