测者的性能测试手册:JVM的监控利器

举报
SUNSKY 发表于 2019/10/13 13:14:43 2019/10/13
【摘要】 每次聊起性能测试,最后的终结话题就是怎么做优化。其实在Java的复杂项目中都会有内存不足问题、内存泄露问题、线程死锁问题、CPU问题。这些问题工程测试或者是小压力的情况下有可能并不明显,很容易被忽视。但是到了生产环境,问题就暴露了,各种非功能bug会让你头疼不已。

每次聊起性能测试,最后的终结话题就是怎么做优化。其实在Java的复杂项目中都会有内存不足问题、内存泄露问题、线程死锁问题、CPU问题。这些问题工程测试或者是小压力的情况下有可能并不明显,很容易被忽视。但是到了生产环境,问题就暴露了,各种非功能bug会让你头疼不已。

今天,测者就把自己针对JVM监控、分析常用的工具发给总结一下,也许你就能找打一个你喜欢的。

jstat

jstat是JVM统计监测工具,主要用来监视java虚拟机的各种运行状态的工具。通过他可以监控虚拟机中class的装载、内存状况、GC、以及jit编译等很多运行时数据,是一个定位运行时过程的jvm性能重要工具。

1.0.png

参数作用备注


class用于查看类加载情况的统计jstat -class pid:显示加载class的数量,及所占空间等信息。


compiler查看HotSpot中即时编译器编译情况的统计jstat -compiler pid:显示VM实时编译的数量等信息。gc查看JVM中堆的垃圾收集情况的统计jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
gccapacity查看新生代、老生代及持久代的存储容量情况jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小


gccause查看垃圾收集的统计情况(这个和-gcutil选项一样),如果有发生垃圾收集,它还会显示最后一次及当前正在发生垃圾收集的原因。jstat -gccause:显示gc原因


gcnew查看新生代垃圾收集的情况jstat -gcnew pid:new对象的信息


gcnewcapacity用于查看新生代的存储容量情况jstat -gcnewcapacity pid:new对象的信息及其占用量


gcold用于查看老生代及持久代发生GC的情况jstat -gcold pid:old对象的信息


gcoldcapacity用于查看老生代的容量jstat -gcoldcapacity pid:old对象的信息及其占用量


gcpermcapacity用于查看持久代的容量jstat -gcpermcapacity pid: perm对象的信息及其占用量


gcutil查看新生代、老生代及持代垃圾收集的情况jstat -util pid:统计gc信息统计


printcompilationHotSpot编译方法的统计jstat -printcompilation pid:当前VM执行的信息


jmap

jmap是java内存映射工具,jmap用于生成堆转储快照(heapdump文件或者dump文件),打印出制定java进程的内存情况。除了可以获取dump文件,还可以查询finalize执行队列以及JVM的堆和永久代的详细信息。

1.1.png

其中,参数如下(如果运行在64位JVM上,可能需要指定-J-d64命令选项参数):

1.2.png1.3.png

##jstack

jstack 可以针对当前java进程状态生产快照。该快照是当前Java虚拟机中每一条进程正在执行的方法堆栈的记录。是快速定位线程出现死锁、死循环、外部资源等待等长时间停止状态问题的很好的方法。

1.4.png

参数如下:

1.5.png

##jps

jps主要用来输出JVM中运行的进程状态信息。语法格式如下:

1.6.png

如果不指定hostid就默认为当前主机或服务器。参数如下:

1.7.png

jinfo

jinfo可以获取java配置信息,比如:获取一些当前进程的jvm运行和启动信息等。命令格式:

1.8.png

参数如下:

1.9.png

关注测者,关注测试

本文转载自异步社区。

原文链接:https://www.epubit.com/articleDetails?id=N63221239-922f-407d-bcd9-4426c810c48e


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。