jps:虚拟机进程状况工具

jps可以用来查看虚拟机进程,基本等同于ps -ef|grep java

#查看jps的使用文档
[root@localhost script]# jps -help
usage: jps [-help]
jps [-q] [-mlvV] [<hostid>] Definitions:
<hostid>: <hostname>[:<port>] #查看虚拟机的进程号
[root@localhost script]# jps
4176 Jps
3659 swaggerdemo-0.0.1-SNAPSHOT.jar #查看虚拟机的进程号,只输出进程号
[root@localhost script]# jps -q
4192
3659 #输出虚拟机启动时传给main方法的参数
[root@localhost script]# jps -m
4208 Jps -m
3659 swaggerdemo-0.0.1-SNAPSHOT.jar #输出主类的全名,或者jar的全路径
[root@localhost script]# jps -l
4224 sun.tools.jps.Jps
3659 /data/services/demo/swaggerdemo-0.0.1-SNAPSHOT.jar #输出jvm的参数
[root@localhost script]# jps -v
4240 Jps -Denv.class.path=.:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar -Dapplication.home=/usr/java/jdk1.8.0_131 -Xms8m
3659 swaggerdemo-0.0.1-SNAPSHOT.jar -Dloader.path=/data/services/demo -Dlog.path=/data/logs -Xms256m -Xmx512m #输出-l和-v的合集
[root@localhost script]# jps -lv
4256 sun.tools.jps.Jps -Denv.class.path=.:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar -Dapplication.home=/usr/java/jdk1.8.0_131 -Xms8m
3659 /data/services/demo/swaggerdemo-0.0.1-SNAPSHOT.jar -Dloader.path=/data/services/demo -Dlog.path=/data/logs -Xms256m -Xmx512m

jstat:虚拟机统计信息监视工具

用来监视虚拟机各种运行状态信息的命令行工具,可以显示虚拟机进程中类装载、内存、垃圾回收、JIT编译等运行数据,是运行期定位问题的首选工具。

#查看帮助文档
[root@localhost script]# jstat -help
Usage: jstat -help|-options
jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]] Definitions:
<option> An option reported by the -options option
<vmid> Virtual Machine Identifier. A vmid takes the following form:
<lvmid>[@<hostname>[:<port>]]
Where <lvmid> is the local vm identifier for the target
Java virtual machine, typically a process id; <hostname> is
the name of the host running the target Java virtual machine;
and <port> is the port number for the rmiregistry on the
target host. See the jvmstat documentation for a more complete
description of the Virtual Machine Identifier.
<lines> Number of samples between header lines.
<interval> Sampling interval. The following forms are allowed:
<n>["ms"|"s"]
Where <n> is an integer and the suffix specifies the units as
milliseconds("ms") or seconds("s"). The default units are "ms".
<count> Number of samples to take before terminating.
-J<flag> Pass <flag> directly to the runtime system.

option:可以通过jstat -options 查看具体有哪些java虚拟机进程的数据可以被监控,见下面的执行代码。

vmid:java虚拟机进程的id,可以通过jps -l来查看。(距离我这儿的java虚拟机进程id是3659)

lines:用来添加表头,比如你要监视类装载情况,通过 -h5,可以指定每5行输出一次表头。(jstat -class -t -h5  3659 500 20和jstat -class -t  3659 500 20各执行一次,就可以明白)

interval:采样的间隔时间,比如每500ms采样一次输出一行。(jstat -class -t -h5  3659 500 20)

count:采样的次数,比如对虚拟机类装载采样20次,每隔500ms采一次,每5行输出一次表头。(jstat -class -t -h5  3659 500 20,-class是监视类装载,-t是输出时间戳,3659是虚拟机进程id,500是每隔500ms采样,20是总共采样的次数)

[root@localhost script]# jstat -class -t -h5  3659 500 20
Timestamp Loaded Bytes Unloaded Bytes Time
2505.5 7846 13754.1 0 0.0 11.06
2506.0 7846 13754.1 0 0.0 11.06
2506.5 7846 13754.1 0 0.0 11.06
2507.0 7846 13754.1 0 0.0 11.06
2507.5 7846 13754.1 0 0.0 11.06
Timestamp Loaded Bytes Unloaded Bytes Time
2508.0 7846 13754.1 0 0.0 11.06
2508.5 7846 13754.1 0 0.0 11.06
2509.0 7846 13754.1 0 0.0 11.06
2509.5 7846 13754.1 0 0.0 11.06
2510.0 7846 13754.1 0 0.0 11.06
Timestamp Loaded Bytes Unloaded Bytes Time
2510.5 7846 13754.1 0 0.0 11.06
2511.0 7846 13754.1 0 0.0 11.06
2511.5 7846 13754.1 0 0.0 11.06
2512.0 7846 13754.1 0 0.0 11.06
2512.5 7846 13754.1 0 0.0 11.06
Timestamp Loaded Bytes Unloaded Bytes Time
2513.1 7846 13754.1 0 0.0 11.06
2513.5 7846 13754.1 0 0.0 11.06
2514.0 7846 13754.1 0 0.0 11.06
2514.6 7846 13754.1 0 0.0 11.06
2515.1 7846 13754.1 0 0.0 11.06

通过jstat -options查看,能够监视的类别有哪些

[root@localhost script]# jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation

-class

监视类装载、卸载数量、总空间及类装载所耗费时间

-compiler

输出编译器编译的方法、耗时等信息

-gc

监视堆得使用情况,包括eden、survivor、老年代、永久代

-gccapacity

与-gc基本相同,主要关注堆各个区域最大、最小空间

-gccause

与-gcutil基本相同,输出最近一次GC产生原因

-gcmetacapacity

输出元空间用到的最大、最小空间

-gcnew

新生代,参考-gc解释

-gcnewcapacity

新生代,参考-gccapacity解释

-gcold

老年代

-gcoldcapacity

老年代

-gcutil

与-gc基本相同,主要关注已使用空间占总空间的比值

-printcompilation

监视已经被编译的方法

jinfo:java配置信息工具

jinfo可以实时查看和调整虚拟机各项参数

[root@localhost script]# jinfo -help
Usage:
jinfo [option] <pid>
(to connect to running process)
jinfo [option] <executable <core>
(to connect to a core file)
jinfo [option] [server_id@]<remote server IP or hostname>
(to connect to remote debug server) where <option> is one of:
-flag <name> to print the value of the named VM flag
-flag [+|-]<name> to enable or disable the named VM flag
-flag <name>=<value> to set the named VM flag to the given value
-flags to print VM flags
-sysprops to print Java system properties
<no option> to print both of the above
-h | -help to print this help message

jinfo可以查看两种类型数据,一种是system properties(通过执行jinfo -sysprops 3659),一种是vm flags(通过执行jinfo -flags 3659),如果不指定参数,则把两种都打印出来(jinfo 3659)。查询某个vm flag,可以通过制定flag name来进行(jinfo -flag NewSize 3659,会把虚拟机参数NewSize打印出来),也支持实时修改flag参数。(3659是java虚拟机进程id)

java性能优化常用工具jps、jstat、jinfo的更多相关文章

  1. java性能优化常用工具jmap、jstack

    jmap:java内存映像工具 jmap用于生成堆转储快照,比较常用的option包括-heap,-histo,-dump [root@localhost script]# jmap -h Usage ...

  2. 【Linux】在linux上java工具jps jstat jinfo等命令找不到怎么办

    一.yum安装方式 1)搜索openjdk-devel相关的安装包 yum search java|grep jdk 2)安装对应的版本 yum install -y java-1.8.0-openj ...

  3. JAVA性能优化工具小记

    好记性不如烂笔头,戊戌年的最后一个工作日,把自己平时在开发过程中使用的一些java性能优化工具做一个简单的小结, 主要包括 jvisualvm.jfr.gdb和查看内存对象信息的几个linux命令. ...

  4. JVM——九大工具助你玩转Java性能优化

    本文转载自 http://www.importnew.com/12324.html 本文由 ImportNew - 陈 晓舜 翻译自 idrsolutions.欢迎加入翻译小组.转载请参见文章末尾的要 ...

  5. 推荐:Java性能优化系列集锦

    Java性能问题一直困扰着广大程序员,由于平台复杂性,要定位问题,找出其根源确实很难.随着10多年Java平台的改进以及新出现的多核多处理器,Java软件的性能和扩展性已经今非昔比了.现代JVM持续演 ...

  6. 【转】10种简单的Java性能优化

    10种简单的Java性能优化 2015/06/23 | 分类: 基础技术 | 14 条评论 | 标签: 性能优化 分享到: 本文由 ImportNew - 一直在路上 翻译自 jaxenter.欢迎加 ...

  7. Android 性能优化之工具和优化点总结

    Android性能优化学习 最近公司主抓性能优化工作,借此春风也学习到了许多Android性能优化方面的知识.由于组内队友的给力,优化的成果也是比较喜人.同时也学习和实践了不少知识,特此记录. 1.性 ...

  8. 《Java性能优化权威指南》

    <Java性能优化权威指南> 基本信息 原书名:Java performance 原出版社: Addison-Wesley Professional 作者: (美)Charlie Hunt ...

  9. Java 性能优化的五大技巧

    要对你的 Java 代码进行优化,需要理解 Java 不同要素之间的相互作用,以及它是如何与其运行时的操作系统进行交互的.使用下面这五个技巧和资源,开始学习如何分析和优化你的代码吧. 在我们开始之前, ...

随机推荐

  1. Java从入门到精通(第5版)上半部分

    1.1java简介 先起了oak 橡树 这个名字,因为商标原因改为爪洼岛谐音的Java 一次编写,到处运行 java如何运行 java程序既是编译型又是解释型 Java版本 Java SE 标准版(开 ...

  2. P4198-楼房重建【线段树】

    正题 题目链接:https://www.luogu.com.cn/problem/P4198 题目大意 \(n\)条线,开始时第\(i\)条是\((i,0)\)的一个点. 每次有操作把第\(x\)条线 ...

  3. NOI.AC#2007-light【根号分治】

    正题 题目链接:http://noi.ac/problem/2007 题目大意 \(n\)个格子排成一排,每个格子有一个\(0/1\)和一个颜色.开始每个格子都是\(0\),\(q\)次操作取反一个颜 ...

  4. AT4502-[AGC029C]Lexicographic constraints【二分,栈】

    正题 题目链接:https://www.luogu.com.cn/problem/AT4502 题目大意 给出\(n\)个长度\(S\),求一个最小\(m\)表示用大小为\(m\)的字符集构造出\(n ...

  5. Win10环境下多JDK切换以及could not find java.dll异常解决

    备注:主要为JDK1.7和JDK1.8之间进行切换 1.每次进行JDK切换时,都需要修改JAVA_HOME 2.编辑path环境变量,如图所示,将%JAVA_HOME%\jre\bin和%JAVA_H ...

  6. 请求既有multipartFile,也有实体的解决方案

    上回书我们说到,我们在发文件上传请求的时候,携带数据 this.fileData.append('trainName', this.dataModel.trainName); // 添加培训名称 然后 ...

  7. equals之List

    School类 package com.collection.equals; /* * 定义一个学校类 相当于一个学校模板 * 状态: 1.学校id 2.学校名称 * */ public class ...

  8. Java-多态(上)

    什么是多态 同一方法可以根据发送对象的不同而采取多种不同的行为方式 一个对象实际类型是确定的 但指向其引用类型却有很多 注意事项 多态是方法的多态 属性没有多态 父类和子类 有联系 类型转换异常 Cl ...

  9. $hadow$ocks与Privoxy基础原理

    $hadow$ocks与Privoxy基础原理 以下所有提到$hadow$ocks的均以ss指代 为什么要用ss呢? 在早期(如今绝大多数也是),对于互联网的访问流程是及其简单的:浏览器(或其他客户端 ...

  10. 查询windows日志

    系统日志可以用来查看系统的一些信息,比如警告.错误.验证.开关机等. 打开系统日志 按下快捷键win+R,输入eventvwr.exe,并点击确定 查询开关机记录 点击左侧Windows日志-> ...