jvm 性能调优工具之 jps 命令详解
JPS名称:jps - Java Virtual Machine Process Status Tool
命令用法:jps [options] [hostid]
options:命令选项,用来对输出格式进行控制
hostid:指定特定主机,可以是ip地址和域名, 也可以指定具体协议,端口。
[protocol:][[//]hostname][:port][/servername]
功能描述:
jps是用于查看有权访问的hotspot虚拟机的进程. 当未指定hostid时,默认查看本机jvm进程,否者查看指定的hostid机器上的jvm进程,此时hostid所指机器必须开启jstatd服务。 jps可以列出jvm进程lvmid,主类类名,main函数参数, jvm参数,jar名称等信息。
jps 命令类似与 linux 的 ps 命令,但是它只列出系统中所有的 Java 应用程序。 通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息。
如果在 linux 中想查看 java 的进程,一般我们都需要 ps -ef | grep java 来获取进程 ID。
如果只想获取 Java 程序的进程,可以直接使用 jps 命令来直接查看。
使用方法:
在当前命令行下输入jps(jps存放在JAVA_HOME/bin/jps,使用时为了方便需将JAVA_HOME/bin/加入到Path) 。
参数说明:
无参数:显示进程的ID和类的名称
-q:仅显示进程ID
-m:输出传入 main 方法的参数
-l:输出java进程全路径,比如应用程序主类完整package名称或jar完整名称
-v:输出jvm参数,比如堆大小,此命令方便我们查看JVM大小,不用去找配置文件
-V:输出通过flag文件(.hotsportrc或-XX:Flags=<filename>)传递到JVM中的参数
用法示例:
[root@hadoop ~]# cd /usr/local/zookeeper/bin/ #首先启动zookeeper,对比一下jps和ps -ef|grep java的区别
[root@hadoop bin]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop bin]# jps #jps 不带参数,默认显示进程ID和启动类的名称。
4060 QuorumPeerMain
4077 Jps
[root@hadoop bin]# ps -ef|grep java
root 4060 1 1 16:50 pts/0 00:00:00 /usr/java/bin/java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/bin/../lib/netty-3.10.5.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/bin/../zookeeper-3.4.9.jar:/usr/local/zookeeper/bin/../src/java/lib/*.jar:/usr/local/zookeeper/bin/../conf:.:/usr/java/lib/dt.jar:/usr/java/lib/tools.jar:/usr/java/jre/lib -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /usr/local/zookeeper/bin/../conf/zoo.cfg
root 4088 2748 0 16:50 pts/0 00:00:00 grep --color=auto java [root@hadoop bin]# jps -q #参数-q只输出进程ID,而不显示出类的名称
4091
4060 [root@hadoop bin]# jps -m #参数-m可以输出传递给Java进程(main方法)的参数
4101 Jps -m
4060 QuorumPeerMain /usr/local/zookeeper/bin/../conf/zoo.cfg [root@hadoop bin]# jps -l #参数-l可以输出主函数的完整路径(类的全路径)
4060 org.apache.zookeeper.server.quorum.QuorumPeerMain
4111 sun.tools.jps.Jps [root@hadoop bin]# jps -v #参数-v可以显示传递给Java虚拟机的参数
4121 Jps -Denv.class.path=.:/usr/java/lib/dt.jar:/usr/java/lib/tools.jar:/usr/java/jre/lib -Dapplication.home=/usr/java -Xms8m
4060 QuorumPeerMain -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false [root@hadoop bin]# jps -V
4131 Jps
4060 QuorumPeerMain
获取远程服务器 jps 信息
jps [ip]:可以列出远程机器上的java进程信息,不过需要安全授权。
步骤:
1.在远程机器%JAVA_HOME%/bin/目录下创建jstatd.all.policy文件,内容如下:
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
2.在远程机器%JAVA_HOME%/bin/目录下,执行如下命令:
jstatd -J-Djava.security.policy=jstatd.all.policy &
3.在本地机器上使用jps访问远程机器上的JVM。
现在就让我们实际试一下吧~
.首先在本地执行命令,发现报错(报错信息:RMI服务未注册)
C:\Users\Administrator>jps 192.168.146.128
RMI Registry not available at 192.168.146.128:
Connection refused to host: 192.168.146.128; nested exception is:
java.net.ConnectException: Connection refused: connect .在远程服务器创建策略文件并执行命令
[root@hadoop ~]# java -version #查看java版本
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) -Bit Server VM (build 25.11-b03, mixed mode)
[root@hadoop ~]# echo $JAVA_HOME #找到JAVA_HOME目录
/usr/java
[root@hadoop ~]# cd /usr/java/bin/ #进入%JAVA_HOME%/bin/目录
[root@hadoop bin]# vi jstatd.all.policy #创建文件
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
[root@hadoop bin]# jstatd -J-Djava.security.policy=jstatd.all.policy & #执行命令
[] .测试是否成功
[root@hadoop ~]# cd /usr/local/zookeeper/bin/ #启动一个java进程,这里我启动zk
[root@hadoop bin]# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@hadoop bin]# jps #在远程机器上查看jps
QuorumPeerMain
Jstatd
Jps C:\Users\Administrator>jps 192.168.146.128 #在本地机器上查看jps
QuorumPeerMain
Jstatd
实操
遇到问题:Java RMI:rmi Connection refused to host: 127.0.0.1异常解决
解决方法:https://blog.csdn.net/chenchaofuck1/article/details/51558995
参考:
jps官方文档:https://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html
JAVA JPS 命令详解:https://www.cnblogs.com/tulianghui/p/5914535.html
jvm 性能调优工具之 jps:https://www.jianshu.com/p/d39b2e208e72
jvm 性能调优工具之 jps 命令详解的更多相关文章
- jvm 性能调优工具之 jstat 命令详解
Jstat名称:Java Virtual Machine statistics monitoring tool 官方文档:https://docs.oracle.com/javase/1.5.0/do ...
- jvm 性能调优工具之 jmap 命令详解
jmap名称:Java Memory Map(内存映射) 官方文档:https://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jmap.html ...
- JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)
性能分析工具jstatjmapjhatjstack 前提概要: JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jsta ...
- 【十一】jvm 性能调优工具之 jmap
jvm 性能调优工具之 jmap 概述 命令jmap是一个多功能的命令.它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息.查看 ClassLoader 的信息以及 fi ...
- JVM 性能调优工具
jdk自带的工具,在macOs系统中的目录位置(jdk具体版本位置要替换):/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Ho ...
- 【十三】jvm 性能调优工具之 jstack
一.介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&qu ...
- jvm 性能调优工具之 jstat
概述 Jstat是JDK自带的一个轻量级小工具.全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建 ...
- 【十二】jvm 性能调优工具之 jhat (JVM Heap Analysis Tool)
jhat也是jdk内置的工具之一.主要是用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言. jhat 非常耗费cpu和内存,所以一般不使 ...
- jvm 性能调优工具之 jmap
概述 命令jmap是一个多功能的命令.它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息.查看 ClassLoader 的信息以及 finalizer 队列. jmap ...
随机推荐
- python 同步与异步的性能区别及实例
同步与异步的性能区别 1. #coding:utf-8 import gevent def task(pid): """ Some non-deterministic ...
- “淘宝技术这十年”
"少时淘气,大时淘宝" 时势造英雄 起因eBay 易趣 在资本方面对仗,阿里想趁此崛起新项目就要求能在短时间内做出一个 个人对个人的商品交易网站(C2C)2003年4月7日-5月1 ...
- 从社交到IP 庞大手游玩家大军迈向社群化之路
庞大手游玩家大军迈向社群化之路" title="从社交到IP 庞大手游玩家大军迈向社群化之路"> 移动互联网及相关智能设备的快速迭进,不仅改变了我们的生活方式,也彻 ...
- Docker Swarm和Kubernetes在大规模集群中的性能比较
Contents 这篇文章主要针对Docker Swarm和Kubernetes在大规模部署的条件下的3个问题展开讨论.在大规模部署下,它们的性能如何?它们是否可以被批量操作?需要采取何种措施来支持他 ...
- Javascript中的局部变量、全局变量的详解与var、let的使用区别
前言 Javascript中的变量定义方式有以下三种方式:1.直接定义变量,var与let均不写: a = 10; 2.使用var关键字定义变量 var a = 10; 3.使用let关键字定义变量 ...
- jenkins-设置定时任务
前言 跑自动化用例每次用手工点击 jenkins 出发自动化用例太麻烦了,我们希望能每天固定时间 跑,这样就不用管了,坐等收测试报告结果就行. 一.定时构建语法 * * * * * (五颗星,中间用 ...
- MQ消息丢了怎么破?在线等.....
MQ又丢消息了,老板眉头一紧............ 在我们从事技术的工作中,离不开中间件,mq就是常见的中间件之一,丢消息可能是我们经常遇到的,为啥会丢?丢了怎么破?测试能不能复现,很多同学知道一些 ...
- C++ 迷宫寻路问题
迷宫寻路应该是栈结构的一个非常经典的应用了, 最近看数据结构算法应用时看到了这个问题, 想起来在校求学时参加算法竞赛有遇到过相关问题, 感觉十分亲切, 在此求解并分享过程, 如有疏漏, 欢迎指正 问题 ...
- Docker Compose 项目打包部署
Docker Compose 前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器.然而微服务架构的应用系统一 ...
- 我厌倦了 Redux,那就造个轮子 Rectx:第三集
仓库:215566435/rectx 前言 麻烦快去我的仓库里面喷: 老子学不动了,求不要更新. 呵呵,你没想到吧,这玩意儿竟然有第三集!我靠,我自己都没想到,让我们悄悄的回顾一下前两集完全没想到,竟 ...