JVM-监控命令及工具

1.JDK命令行工具

开发人员肯定知道java.exe和javac.exe

今天介绍一些jvm性能监控常用命令

1.1 jps

JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程

jps -l 输出主类的全名,如果执行程序是jar包,输出jar的路径

-v 输出虚拟机进程启动时jvm参数

-q只输出LVMID,省略主类名称

-m输出虚拟机启动时传递给main()函数的参数

1.2 jstat

JVM Statistics Monitoring Tool

用于收集HotSpot虚拟机各方面的运行数据

在项目中一般使用

jstat -gc 进程号 5000(毫秒)  20 ( 说明:每5秒刷新一次,二十次后停止)

-gcutil  百分比

S0 S1 表示suervivor区survivor1,survivor2

E表示eden区

O表示老年代

M metaspace 元空间

CCS 内存池Compressed class space 压缩类空间

YGC 年轻代gc次数

YGCT 年轻代gc时间

FGC  full gc 次数

FGCT full gc 时间

其他命令行参数:

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

-gcnew监视新生代GC

-gcold监视老年代GC

-gcpermcapacity输出永久代使用到最大、最新空间

-compiler输出JIT编译器编译过的方法,耗时信息

1.3 jinfo

Configuration info for java

显示虚拟机配置信息

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

jinfo -flag

Jinfo -flag 进程号  默认jvm信息

-flags 表示查看所有参数信息

直接查看

Linux (64位虚拟机)下面默认1.9g 新生代 700m

1.4 jmap

Memory Map for Java

生成虚拟机的内存转存储快照heapdump文件或者dump文件

jmp -dump:format=b,file=文件名 pid进程号

jdk自带jhat配合jmap进行使用,可以分析dump文件,但是一般会用专业的工具进行分析,后面会提到。

jmap -heap 进程号

显示java堆详细信息,使用哪种回收器、参数配置、分代状况等等

1.5 jstack

Stack Trace for Java

显示虚拟机的线程快照,该命令用于生成虚拟机当前时刻的线程快照(threaddump卓和javacore文件)。

-F 当正常输出的请求未响应时,强制输出线程中的堆栈

-l 除堆栈信息外,显示关于锁的附加信息

-m 如果调用本地方法,可以显示C/C++的堆栈

2.可视化监控工具

2.1 jconsole 

jdk自带,双击使用

注意:如果是远程连接 需要配置jvm的jmx参数信息

linux环境下,可以vim .bash_profile文件


JAVA_OPTS='-Djava.rmi.server.hostname=192.168.1.87 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false'

export JAVA_OPTS

java $JAVA_OPTS -jar xxx.jar 启动jar包即可,关闭防火墙

输入地址:端口号 端口号为java_opts中 设置的端口号

内存监控界面可以理解为jstat -gc

2.2 visualvm(推荐)

该工具需要自行在网上下载,免费软件。

线程

这里只介绍该工具分析dump文件

点击File,Load 选中dump文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值