jstat(JVM Statistics Monitoring Tools),用于监视虚拟机各种运行状态信息的命令行工具,它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、JIT编辑等运行数据。

在没有GUI图形界面,只提供了存文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。常用语检测垃圾回收问题以及内存泄露问题。

官方文档
https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jstat.html

基本语法

jstat -

interval参数

用于指定输出统计的周期,单位为毫秒。即:查询间隔

count参数

用于指定查询的总次数

-t参数

可以输出信息前加上Timestamp列,显示程序的运行时间。单位为秒

-h参数

可以在周期性数据输出时,输出多少行数据输出一个表头信息

-option参数

JIT相关

  • -complier:显示JIT编译器编译过的方法、耗时等信息
  • -printcompliation:输出已经被JIT编译的方法

类装载相关的

  • -class:显示ClassLoader的相关信息:类的装载、卸载数量、总空间、类装载所消耗的时间等

    垃圾回收相关

  • -gc:显示GC相关的堆信息。包括Eden区、两个Survivor区、老年代、永久代等容量、已用空间、GC时间合计等信息。

  • -gccapacity:显示内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间。
  • -gcutil:显示内容与-gc基本相同,但输出内容主要关注已使用空间占总空间的百分比。
  • -gccause:与-gcutil功能一样,但是会额外输出导致最后一次或当前正在发生的GC产生的原因。
  • -gcnew:显示新生代GC状况
  • -gcnewcapacity:显示内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
  • -gcold:显示老年代GC状况
  • -gcoldcapacity:显示内容与-gcold基本相同,输出主要关注使用到的最大、最小空间
  • -gcp:显示永久代使用到的最大、最小空间