jvm常用查询指令

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,不同版本间可能存在差异。

outputOptions

-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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值