三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析( 二 )


Java(TM) SE Runtime Environment (build 1.8.0_151-b12)jpsjps:JVM Process Status Tool , 一款用于查看java进程的工具 。 这款工具的功能非常简单 , 就是查看当前环境下运行的java服务的进程id和名称 , 一般其他命令使用前都会先使用jps命令获取java进程信息 。 如下图所示:
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析jps参数主要有如下选项:
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析jstatjstat:JVM Statistics Monitoring , 一款用于监视虚拟机各种运行状态统计信息工具 。 主要可以显示如下信息:虚拟机进程的类装载、内存、垃圾收集、JIT编译等运行数据信息 。
查看类装载信息jstat -class PID 1000 10 //查看某个java进程的类装载信息 , 每1000毫秒输出一次 , 共输出10次
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析查看垃圾收集信息jstat -gc PID 1000 10
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析上图中就显示个各个区以及垃圾回收的情况,具体代表含义如下:注意:C表示Capacity(容量) , U表示Used(已使用大小)

  • 1、S0C、S1C表示的是Survive区的S0和S1大小(Capacity)
  • 2、S1U、S2U表示已使用空间大小(Used)
  • 3、EC、EU分别表示Eden区总容量和已使用容量大小
  • 4、OC、OU分别表示老年代总空间大小和已使用大小
  • 5、MC、MU:表示方法区(jdk1.8中通过Metaspace实现)的总空间大小和已使用大小
  • 6、CCSC、CCSU:表示压缩类空间总大小和已使用大小
  • 7、YGC、YGT:新生代GC次数和GC总耗时
  • 8、FGC、FGCT:Full GC次数和Full GC总耗时
  • 9、GCT:GC总消耗时间

三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析jstackjstack:Stack Trace for Java , 一款用于生成当前时刻的线程状态信息的快照工具 。 这个对于用来分析当前线程状态时非常有用的 , 比如说是否有哪个线程阻塞了 , 或者说是否发生死锁等信息 。 如:
jstack PID
三好先森|JDK常用监控指令和监控工具及OutOfMemory异常分析可以清晰的看到当前线程的状态 。 另外线程的名字也会打印出来 , 所以在我们自己创建线程的时候建议是采用自定义的名称 , 这样如果有异常我们可以很容易的知道是哪个线程出了问题 。
jstack参数常用选项jinfojinfo:Configuration Info For Java , 一款用于实时查看和修改JVM参数的工具 。
注意 , 如果是修改的话 , 只能用我们上面使用命令打印出来参数中的manageable类型才可以被修改 。
jinfo -flag name PID 查看某个java进程的name属性的值jinfo -flags PID 查看已经赋值的JVM参数针对Boolean类型的-XX参数修改命令为:
jinfo -flag [+|-]name PID针对非Boolean类型的-XX参数修改命令为:
jinfo -flag name=value PID如:


推荐阅读