JVM命令行调优工具备忘录

231 阅读3分钟

jps

  • 作用:查看pid进程相关信息
  • no option:输出进程id及 image.png
  • -l:输出完全的包名,应用主类名,jar的完全路径名 image.png
  • -v:输出jvm参数 image.png
  • -q:只显示进程ID,不显示类名和JAR文件。 image.png
  • -m:显示传递给主类的参数。 image.png
  • -V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件

jinfo

  • 作用:查看Java System属性和JVM命令行参数,查配置使用(同样也会暂停线程)
  • -flags [进程id]:打印所有启动参数
  • -flag [变量名] [进程id]:打印指定启动参数 image.png
  • -sysprops [pid]:打印环境变量(截图有缩减) image.png
  • no option 打印所有信息(flags+sysprops)
  • -flag [+|-][变量名] [进程id]:打开或关闭指定参数 image.png

jstat

  • 作用:对jvm实时监控,会阻塞线程
  • jstat [option] [pid] [interval] [count]:格式统一,主要是option,下面会列出
  • option
    • class:显示类加载、卸载和合计数量的统计信息。
    • compiler:显示JIT编译器的统计信息。
    • gc:gc统计信息 image.png
    • gcutil:显示垃圾回收的统计信息以及堆内存使用情况的摘要。 image.png
    • gccapacity:显示堆内存容量和使用情况的统计信息。 image.png
    • gccause:显示导致垃圾回收的原因。 image.png
    • gcnew:显示新生代的垃圾回收统计信息。 image.png
    • gcnewcapacity:显示新生代的容量和使用情况的统计信息。 image.png
    • gcold:显示老年代的垃圾回收统计信息。
      image.png
    • gcoldcapacity:显示老年代的容量和使用情况的统计信息。 image.png
    • gcpermcapacity:显示永久代(或元空间)的容量和使用情况的统计信息。
    • gcmetacapacity:显示元数据区的容量和使用情况的统计信息。 image.png
    • printcompilation:显示已经完成的JIT编译任务。 image.png

字段介绍

字段说明
S0CSurvivor 0区的容量
S1CSurvivor 1区的容量
S0USurvivor 0区的使用量
S1USurvivor 1区的使用量
ECEden区的容量
EUEden区的使用量
OCOld区的容量
OUOld区的使用量
PCPermanent区的容量
PUPermanent区的使用量
YGC年轻代垃圾回收次数
YGCT年轻代垃圾回收总时间(秒)
FGCFull GC次数
FGCTFullGC 总时间(秒)
GCT垃圾回收总时间(秒)
NGCMN年轻代最小容量
NGCMX年轻代最大容量
NGC年轻代当前容量
OGCMN老年代最小容量
OGCMX老年代最大容量
OGC老年代当前容量
MCMN元数据区最小容量
MCMX元数据区最大容量
MC元数据区当前容量
CCSMN压缩类空间最小容量
CCSMX压缩类空间最大容量
CCSC压缩类空间当前容量

jstack

  • 作用:查看线程快照
  • jstack -l 64997:查看当前jvm线程快照,包含锁的信息 image.png

image.png

  • jstack -m 64997:混合的栈帧信息
  • jstack -F 64997:强制生成快照

jmap

  • 作用:dump内存,会暂停线程
  • dump:dump
    • jmap -dump:format=b,file=dump.hprof 23471
  • histo: 统计堆中的各个类的信息 image.png
  • heap:展示堆中的使用情况

image.png