jdk内置java命令 -java环境监控

参考: Oracle Javase8 Doc 关注Monitoring

1. jps

查询当前机器上当前用户的jvm进程的启动信息,包括pid,启动类,启动参数等相关信息

jps -lv | findstr Test
jps -lv | grep Test

查询结果

jps [ options ] [ hostid ]
options:

  • -q
          只展示JVM的进程id
  • -m
          展示main方法的参数,如果是内置JVM
  • -l
          展示main class的全路径名称
  • -v
          展示传给JVM的环境变量(启动参数)
  • -V
          只展示进程id 以及 class 名称

2. jstat

查询jvm资源和性能消耗情况,用于分析性能问题,尤其涉及到垃圾回收堆大小

jstat -gc 1

jstat [ options ] pid

  • -class
          展示classloader的行为数据
  • -compiler
          展示JIT编译器的行为数据
  • -gc
          展示堆垃圾回收的行为数据
  • -gccapacity
          展示不同代的堆大小以及他们实际占用空间
  • -gccause
          展示最近一次gc行为的数据
  • -gcnew
          展示新生代的行为数据
  • -gcold
          展示老年代的行为数据
  • -gcnewcapacity
          展示新生代的内存占用情况
  • -gcoldcapacity
          展示老年代的内存占用情况
  • -gcmetacapacity
          展示metaspace的内存占用情况
  • -gcutil
          展示垃圾回收的汇总信息

3. jmap

打印堆内存详情

jmap -heap 1

jmap [ options ] pid

jmap [ options ] executable core

jmap [ options ] [ pid ] server-id@ ] remote-hostname-or-IP

options:

  • no option
          当没有option被用到时,jmap会打印出指定jvm进程所有共享对象的mappings,包括所有的共享对象的起始地址,大小,以及共享对象文件的全路径。和Oracle的Solaris pmap类似;
  • -dump:[live,] format=b, file=filename
          dump整个java堆到一个hprof文件,文件名是filename;live是可选参数,如果被指定,那么只有激活(有被引用?)的对象会被dump。可以使用jat指令或者jvisualvm等其他工具来分析dump的hprof文件;
  • -finalizerinfo
          打印正在等待被回收的对象的信息;
  • -heap
          打印堆空间size以及used汇总信息;
  • -histo[:live]
          打印堆空间中每个对象的class name,数量,大小;如果指定了live参数,只有激活的对象会被打印出来;
  • -clstats
          打印jvm堆内存中的class loader统计数据,包含名称,是否active,地址,父class loader,以及装载过的class数量和大小;
  • -F
          如果jmap -heap 或者jmap -histo没有响应,可以使用这个option强制执行,live选项不支持此模式;
  • -h -help
          打印帮助选项;
  • -J<flag>
          传递flag给jmap启动的jvm;
原文地址:https://www.cnblogs.com/IC1101/p/11949094.html