JVM工具主要用来监控JVM的,这类工具主要分为两大类,第一是jvm自带的,比如jstat、jmap等,还有依赖第三方的,如VisualVM等。这些工具的用途不太一样,监控的方向也不一样,下面简单介绍下jps。
jps:jdk1.5提供的一个显示当前所有java进程pid命令,简单实用,非常适合再linux/unix平台上简单查看当前java进程的一些简单情况。
jps命令的作用是什么?
很多java命令再jdk的java_home/bin/目录下面,jps也不例外,他就是bin目录下,所以,他也是java自带的一个命令。
jdk中jps命令可以显示当前运行java进程及相关参数,它的实现机制如下:
java程序在启动以后,会在java.io.tmpdir指定的目录下,就是临时文件夹中生成一个类似于hsperfdata_User的文件夹,这个文件夹里有几个文件,名字就是java进程的pid,因此列出当前运行的java进程,只是这个目录里的文件名列一下而已。至于系统的参数什么,就可以解析这几个文件获得。
上图中在/tmp/hsperfdata_th目录下ll查看显示当前java应用程序的进程号,可以用jps验证,执行jps之后可以查看上面对应的进程号使用的进程。
jps的使用
使用命令jps -help查看帮助如下:
其中 -q只显示pid,不显示class名称,jar文件名和传递给main方法的参数,-m输出传递给main方法的参数,在嵌入式jvm上可能是null,在这里,在mian方法启动的时候,我给String[] args传递两个参数 ,michael,chuang,执行jps -m:对应相应的进程号和传参,-l 输出应用程序main class的完整package名 或者应用程序的jar文件完整路径名,-v 输出传递给JVM的参数,在这里在启动main方法的时候,给jvm传递了一个参数:-Dfile.encoding=UTF-8,执行jps -v即可查看。
不足
jps命令有个地方不好,似乎只能显示当前用户的java进程,要显示其他用户的还是只能用unix/linux的ps命令。