java性能优化常用工具jps、jstat、jinfo
阅读原文时间:2023年07月08日阅读:2

jps:虚拟机进程状况工具

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

#查看jps的使用文档
[root@localhost script]# jps -help
usage: jps [-help]
jps [-q] [-mlvV] []

Definitions:
: [:]

#查看虚拟机的进程号
[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 -

Definitions:

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]
(to connect to running process)
jinfo [option]
(to connect to a core file)
jinfo [option] [server_id@]
(to connect to remote debug server)

where

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)

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章