jvm监控

jps

[root@tomcat2 bin]# pwd
/usr/java/jdk/bin
//显示运行的所有java进程
[root@tomcat2 bin]# jps
7514 Jps  #jps也是java开发的,所以这里会显示出来

jps (java virtual machine process status tool)监控ivm进程状态信息,可以理解为列出所有的java进程的pid号。

jps [options] [hostid]

  • -m:输出传入main方法的参数

  • -l:显示main类或jar的完全限定名称

  • -v:显示为jvm虚拟机指定的参数,这一个挺有用,可以显示出分配的空间

[root@tomcat2 bin]# pwd
/usr/java/jdk/bin
[root@tomcat2 bin]# jps -m
8379 Jps -m
[root@tomcat2 bin]# jps -l
8391 sun.tools.jps.Jps
[root@tomcat2 bin]# jps -l -v
8403 sun.tools.jps.Jps -Dapplication.home=/usr/java/jdk -Xms8m

jstack

查看某个java进程内线程内的堆栈信息,通过jps命令列出java进程,然后通过jstack去查看进程的堆栈信息。

//显示堆线的信息,会显示的非常详细
jstack PID
这些信息我们运维看不太懂,一些我们是在调优或排错的时候将输出信息交给程序员分析。

选项:

  • -l 1ong listings:输出完成的锁信息:

  • -m:混合模式,即.

在排错或调优时只可以通过jstack查看到底是哪段代码产生了锁导致了问题。

通常会这样的情况,我们通过top观察到一个java进程特别消耗cpu,我们可以将其pid取出来,然后通过jstack来观察查看是哪段代码比较异常。

jmap

jmap:jvm memroy map,查看堆内存使用情况

//查看堆内存使用情况
jmap PID

image-20200409152941162

//详细查看堆内存使用情况,会把堆当中的新生代、老年代、持久代信息显示出来,比较有用
jmap -heap PID 

image-20200409153227353

//详细显示堆空间的对象
jmap -histo:live PID

jstat

jvm的统计监测工具

//查看垃圾回收器的相关信息
jstat -gc PID

image-20200409154004964

  • 字段意义:s0C, SIC, Sou, S1U: C表示容量, U表示已用量,0和1指的就是from和to

  • EC, EU: eden区域的容量和已用量

  • oc, ou:老年代的信息

  • PC, PU:持久代的信息

  • YGC, YGT:新生代的GC次数和耗时

  • FGC, FGCT: FULL GC的次数和耗时

  • GCT: GC.总耗时

原文地址:https://www.cnblogs.com/yizhangheka/p/12667429.html