以下命令都有 -options 来帮助查看有哪些参数设置

 

jps 命令

查看HotSpot当前运行有哪些虚拟进程号

java undertow调优 java调优命令_java

java undertow调优 java调优命令_intellij idea_02

jstat (JVM Statistis Montiroring Tool) 命令

监视虚拟机各种运行状态信息的命令工具, 可以显示本地和远程的类装载,内存,垃圾收集,JIT编译等运行时数据

java undertow调优 java调优命令_java虚拟机_03

类相关信息监控

通过jps查询到进程端口之后, 使用jstat命令执行

  • -class 表示输出类相关的信息(类装载卸载时间)
  • -t 表示程序启动耗费了多少时间ms
  • -h3 表示每隔3s次打印一次表头
  • 12584 表示进程号
  • 1000 表示定时器时间,1s执行一次输出信息
  • 5 表示定时器输出了5次就终止

java undertow调优 java调优命令_java虚拟机_04

GC回收相关监控
  • -gc表示查看当前监控进程的内存使用
  • 14400 表示进程端口号
  • 1000 表示每隔1s执行输出一次监控信息
  • 10 表示输出10次就停止监控

java undertow调优 java调优命令_java undertow调优_05

jinfo 命令

查看HotSpot配置参数,可以用于调整其配置参数,很多情况下java程序不会指定所有的java虚拟机参数, 此时程序员可能不知道具体的java虚拟机默认参数是多少 。这种情况下就可以借助jinfo命令查看当前的信息

查询当前命令可以使用的参数

java undertow调优 java调优命令_java undertow调优_06


jinfo -sysprops 端口号 获取的数据都可以通过我们的System.getProperties()获取到

java undertow调优 java调优命令_JVM_07


查看配置了哪些HotSpot的参数

java undertow调优 java调优命令_java虚拟机_08


jinfo 修改

java undertow调优 java调优命令_intellij idea_09

java -XX:+PrintFlagFinal 命令

查看所有JVM参数的最终设置值
 

java -XX:+PrintFlagsInitial 命令

查看所有的JVM参数启动的初始值, 因为值比较多,可以输出到日志文件log保存

 

jmap 命令

导出(自动或手动)内存中映像文件(dump文件)以及查看gc,类装载,内存使用情况等

java undertow调优 java调优命令_java虚拟机_10


java undertow调优 java调优命令_java_11

查看堆信息

java undertow调优 java调优命令_java_12


 

jstack 命令

用于生成jvm虚拟机指定进程当前时刻的线程快照,线程快照就是当前虚拟机内指定进程的每一条线程正在执行的方法堆栈的集合

生成线程快照作用
可用于定位线程出现长时间停顿的原因, 如线程间死锁,死循环,请求外部资源导致的长时间等待问题。这些都是导致线程是长时间停顿的原因。当线程出现停顿时,就可以用jstack显示各个线程调用的堆栈情况

thread dump文件中,比较关心的状态:

  • 死锁(Deadlock)
  • 等待资源(Waiting on condition)
  • 等待获取监视器(Waiting on monitor entry)
  • 阻塞(Blocked)
  • 执行中(Runnable)
  • 暂停(Suspended)

 

jcmd 命令

一个混和的多功能命令,可以替代jstat,jinfo,jmap