zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Java自带的性能监测工具之jps

JAVA性能工具 监测 自带 jps
2023-06-13 09:17:11 时间

安装好Java之后,在bin目录下有很多的Java自带的工具,如下图所示:

使用这些小工具能帮助我们分析、解决应用遇到的问题等~

本文使用jps命令工具~

jps (Java Virtual Machine Process Status Tool) 是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。

在使用jps命令之前,可以先使用jps -help来查看jps命令相关的使用方法,包括有哪些参数等~

[root@dev18 ~]# jps -help
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]

Definitions:
    <hostid>:      <hostname>[:<port>]

如果jps命令不带任何参数,则它会返回Java进程列表,包括进程ID和进程主函数名称~

如:

[root@dev18 ~]# jps
17336 Jps
1656 Elasticsearch
12905 QuorumPeerMain
4308 activemq.jar

如果只想要知道java进程的ID情况,则可以使用jps -q命令~

[root@dev18 ~]# jps -q
1656
12905
17351
4308

使用jps -l命令,可以看到完整的主函数名(包含包名) 如 org.apache.zookeeper.server.quorum.QuorumPeerMain 或者 jar包的完整路径名, 如 /srv/activemq/apache-activemq-5.14.3//bin/activemq.jar

[root@dev18 ~]# jps -l
1656 org.elasticsearch.bootstrap.Elasticsearch
17373 sun.tools.jps.Jps
12905 org.apache.zookeeper.server.quorum.QuorumPeerMain
4308 /srv/activemq/apache-activemq-5.14.3//bin/activemq.jar

使用jps - m命令,可以获取传递给主函数运行的参数信息~

[root@dev18 ~]# jps -m
1656 Elasticsearch start -d
17390 Jps -m
12905 QuorumPeerMain /srv/zookeepers/zookeeper/bin/../conf/zoo.cfg
4308 activemq.jar start

使用jps -v命令,可以输出传递给JVM的参数信息~

root@dev18 ~]# jps -v
1656 Elasticsearch -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/srv/elasticsearch
17403 Jps -Denv.class.path=.:/usr/java/jdk1.7.0_71/jre/lib/rt.jar:/usr/java/jdk1.7.0_71/lib/dt.jar:/usr/java/jdk1.7.0_71/lib/tools.jar -Dapplication.home=/usr/java/jdk1.7.0_71 -Xms8m
12905 QuorumPeerMain -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false
4308 activemq.jar -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/srv/activemq/apache-activemq-5.14.3//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Djava.io.tmpdir=/srv/activemq/apache-activemq-5.14.3//tmp -Dactivemq.classpath=/srv/activemq/apache-activemq-5.14.3//conf:/srv/activemq/apache-activemq-5.14.3//../lib/: -Dactivemq.home=/srv/activemq/apache-activemq-5.14.3/ -Dactivemq.base=/srv/activemq/apache-activemq-5.14.3/ -Dactivemq.conf=/srv/activemq/apache-activemq-5.14.3//conf -Dactivemq.data=/srv/activemq/apache-activemq-5.14.3//data

-v -m -l 这些参数可以一起使用~

[root@dev18 ~]# jps -l -v -m
17420 sun.tools.jps.Jps -l -v -m -Denv.class.path=.:/usr/java/jdk1.7.0_71/jre/lib/rt.jar:/usr/java/jdk1.7.0_71/lib/dt.jar:/usr/java/jdk1.7.0_71/lib/tools.jar -Dapplication.home=/usr/java/jdk1.7.0_71 -Xms8m
1656 org.elasticsearch.bootstrap.Elasticsearch start -d -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/srv/elasticsearch
12905 org.apache.zookeeper.server.quorum.QuorumPeerMain /srv/zookeepers/zookeeper/bin/../conf/zoo.cfg -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false
4308 /srv/activemq/apache-activemq-5.14.3//bin/activemq.jar start -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/srv/activemq/apache-activemq-5.14.3//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Djava.io.tmpdir=/srv/activemq/apache-activemq-5.14.3//tmp -Dactivemq.classpath=/srv/activemq/apache-activemq-5.14.3//conf:/srv/activemq/apache-activemq-5.14.3//../lib/: -Dactivemq.home=/srv/activemq/apache-activemq-5.14.3/ -Dactivemq.base=/srv/activemq/apache-activemq-5.14.3/ -Dactivemq.conf=/srv/activemq/apache-activemq-5.14.3//conf -Dactivemq.data=/srv/activemq/apache-activemq-5.14.3//data
[root@dev18 ~]#

也可以使用jps -lmv

[root@dev18 ~]# jps -lmv
1656 org.elasticsearch.bootstrap.Elasticsearch start -d -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/srv/elasticsearch
17446 sun.tools.jps.Jps -lmv -Denv.class.path=.:/usr/java/jdk1.7.0_71/jre/lib/rt.jar:/usr/java/jdk1.7.0_71/lib/dt.jar:/usr/java/jdk1.7.0_71/lib/tools.jar -Dapplication.home=/usr/java/jdk1.7.0_71 -Xms8m
12905 org.apache.zookeeper.server.quorum.QuorumPeerMain /srv/zookeepers/zookeeper/bin/../conf/zoo.cfg -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false
4308 /srv/activemq/apache-activemq-5.14.3//bin/activemq.jar start -Xms64M -Xmx1G -Djava.util.logging.config.file=logging.properties -Djava.security.auth.login.config=/srv/activemq/apache-activemq-5.14.3//conf/login.config -Dcom.sun.management.jmxremote -Djava.awt.headless=true -Djava.io.tmpdir=/srv/activemq/apache-activemq-5.14.3//tmp -Dactivemq.classpath=/srv/activemq/apache-activemq-5.14.3//conf:/srv/activemq/apache-activemq-5.14.3//../lib/: -Dactivemq.home=/srv/activemq/apache-activemq-5.14.3/ -Dactivemq.base=/srv/activemq/apache-activemq-5.14.3/ -Dactivemq.conf=/srv/activemq/apache-activemq-5.14.3//conf -Dactivemq.data=/srv/activemq/apache-activemq-5.14.3//data
[root@dev18 ~]#

使用jps 机器名:端口,列出指定机器上所有的jvm实例~ 这种方式采用rmi协议,默认连接端口为1099,默认端口可以不写~

不使用端口~

[root@dev18 ~]# jps localhost
1656 Elasticsearch
12905 QuorumPeerMain
17463 Jps
4308 activemq.jar

使用端口情况~

[root@dev18 ~]# jps localhost:1099
1656 Elasticsearch
12905 QuorumPeerMain
4308 activemq.jar
17476 Jps