51CTO首页
AI.x社区
博客
学堂
精品班
免费课
企业培训
鸿蒙开发者社区
WOT技术大会
AIGC创新中国行
IT证书
公众号矩阵
移动端

看一下JVM中那些常用的性能监控工具

云计算 虚拟化
从这篇文章当中我们主要是分析JDK自带的工具,把理论应用于实践。

在之前的文章中,主要是分析了JVM的内存结构、类加载机制和垃圾回收机制。文章的顺序也是循序渐进的,从这篇文章当中我们主要是分析JDK自带的工具,把理论应用于实践。

首先我们先对几种要讲的工具进行一个概述,然后再分别分析:

一、性能监控工具概述

工具主要是为了解决问题而生的,就是由于我们的程序存在着一些性能问题,才有了这些工具。其实当我们在下载完成JDK之后,那些工具就被SUN公司随之送给我们了。

我们可以在我们的JDK安装目录,下看看会有很多这样的工具。

我们会发现很多这样的exe文件,这里面有很多都是性能监控工具。我们就抽出来几个进行讲解。

工具名称 主要作用
jps(JVM Process Status Tool) 显示指定系统中所有的HotSpot虚拟机进程
jstat(JVM Statistics Monitoring Tool) 收集HotSpot虚拟机各方面的运行数据
jinfo(Configuration Info for Java) 显示虚拟机配置信息
jmap(Memory Map for Java) 生成虚拟机的内存转储快照(heapdump文件)
jhat(JVM Heap Dump Browser) 分析内存转储快照,不推荐使用,消耗资源而且慢
jstack(Stack Trace for Java) 显示虚拟机的线程快照
JConsole JMX的可视化管理工具
VisualVM 多合一故障管理工具

常见的几个工具都已经列出来了,还有一些其他的工具,其实用起来比JDK自带的还要好,我会在今后的文章中列出来。OK,我们就一个一个去分析一下这些工具是干嘛的,以及如何去使用的。

二、工具

1、jps:虚拟机进程状况工具

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

  1. jps [options] [hostid] 
  2.    第一个参数:options 
  3.  
  4. -q 不输出类名、Jar名和传入main方法的参数 
  5. -m 输出传入main方法的参数 
  6. -l 输出main类或Jar的全限名 
  7. -v 输出传入JVM的参数 
  8.     第二个参数:hostid 

主机或者是服务器的id,如果不指定,就默认为当前的主机或者是服务器。

我是在Windows10系统下测试的,当然你可以在linux下试验,方式是一样的,结果可能有不同。你可以选择不同的参数选项来进行测试。打开CMD输入相应命令

2、jstack:堆栈跟踪工具

jstack用于生成虚拟机当前时刻的线程快照。语法格式如下:

  1. jstack [option] vmid 
  2. 第一个参数:option 
  3.  
  4. 选项  作用 
  5. -F  当正常输出的请求不被相应时候,强制输出线程堆栈 
  6. -l  出堆栈外,显示关于锁的附加信息 
  7. -m  如果调用本地方法的话,可以显示C/C++的堆栈 
  8. 第二个参数:vmid 

vmid是Java虚拟机ID,在Linux/Unix系统上一般就是进程ID。

我们直接在CMD中操作一下:

3、jstat:虚拟机统计信息监控工具

jstat监视虚拟机各种运行状态信息,可以显示本地或者是远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。语法格式如下:

  1. jstat [ generalOption | outputOptions vmid [interval] [count]] ] 
  2. 第一个参数:generalOption | outputOptions 

这个参数表示的option,代表着用户希望查询的虚拟机信息,分为类加载、垃圾收集、运行期编译状况3类。

第二个参数:vmid

vmid是Java虚拟机ID,在Linux/Unix系统上一般就是进程ID。

第三个参数:interval

interval是采样时间间隔,

第四个参数:count

count表示的是采样数。

下面我们就是用一下这个工具,打开我们的CMD,输入相应的命令:

4、jinfo:实时地查看和调整虚拟机各项参数

命令格式:

  1. jinfo [option] pid 

第一个参数:option

  1. 选项  作用 
  2. -v  查看虚拟机启动时显示指定的参数列表 
  3. -flag   查看虚拟机启动时未被指定的参数的默认值 
  4. -sysprops   打印虚拟机进程的System.getProperties()的内容 

第二个参数:pid

指定显示的进程id。

在CMD中进行测试:

5、jmap:生成虚拟机的内存转储快照(heapdump文件)

jmap(Memory Map for Java,内存映像工具),用于生成堆转存的快照,一般是heapdump或者dump文件。如果不适用jmap命令,可以使用-XX:+HeapDumpOnOutOfMemoryError参数,当虚拟机发生内存溢出的时候可以产生快照。或者使用kill -3 pid也可以产生。jmap的作用并不仅仅是为了获取dump文件,它可以查询finalize执行队列,java堆和永久代的详细信息,如空间使用率,当前用的哪种收集器。命令格式如下:

  1. jmap [option] vmid 

第一个参数:

第二个参数:vmid

vmid是Java虚拟机ID,在Linux/Unix系统上一般就是进程ID.

在cmd中测试:

6、jhat:分析内存转储快照,不推荐使用,而且慢

由于这个工具功能比较简陋,运行起来也比较耗时,所以这个工具不推荐使用,推荐使用MAT。

7、JConsole:JMX的可视化管理工具

这个工具相比较前面几个工具,使用率比较高,很重要。它是一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。

在cmd里面输入 jconsole,选则进程就可以了。(前提是在IDE工具先建立一个线程运行着)

然后我们选择了相应的选项之后,进入这个工具就会出现下面这个界面

在上面有菜单,我们可以选择其中一个进行查看,就可以了,这个用具用起来很方便,也是我之前用的比较多的工具。

8、VisualVM:多合一故障管理工具

这个工具也很牛bility。它同jconsole都是一个基于图形化界面的、可以查看本地及远程的JAVA GUI监控工具,Jvisualvm同jconsole的使用方式一样,直接在命令行打入jvisualvm即可启动,jvisualvm界面更美观一些,数据更实时:

最上面也有菜单,你可以选择不同的选项来展示。自己动手试一遍是最好的。

三、总结

这些工具就先写这么多,在文章一开始我们其实已经发现了,jdk自带的工具那是超级的多,而且随着jdk版本的不断更新,工具还有不断加强增多的趋势,想要每一个都掌握那太费时间了,我们遇到哪些问题去搜索一下,看看能用到哪些工具就可以了,列出的这几种工具,对于初学者来说还是比较适用的。

 本文转载自微信公众号「愚公要移山」,可以通过以下二维码关注。转载本文请联系愚公要移山公众号。

 

责任编辑:武晓燕 来源: 愚公要移山
相关推荐
看一下iCloud是如何工作
iCloud马上就要和广大果迷见面了相信不少果迷已经对该服务期待已久。被冠以iOS5最重要更新之一的iCloud到底是如何为用户服务的呢下面带果迷们一起了解一下iCloud的内部构造。

2011-10-12 11:07:12

iCloud iOS5 苹果
看一下SQL触发器实战
最近有小伙伴向我请求帮助,要写一个触发器。我看了一下需求很明确,就是执行更新,插入后触发一些事件。觉得挺有意思的,于是帮他写了一下,这里分享给大家。

2021-08-05 07:28:27

SQL 触发器 结构
Vite 设计理念,本文就来详细看一下
Vite并不打算为每个用户的每种用例提供支持。Vite旨在支持最常见的模式来构建开箱即用的Web应用程序,但Vite核心必须保持精简,API接口较小,以保持项目的长期可维护性。

2023-10-23 10:20:25

看一下交换机技术内部核心
交换机技术作为新一代的网络桥梁,它必须具有三层交换的能力,这是骨干交换机的一个显著特征,这样才能保证网络实时通畅。

2010-03-15 10:35:46

三层交换
从零开始来看一下Java泛型设计
泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。

2017-03-03 10:37:07

Java 泛型 设计
JVM性能调优监控工具使用详解
这些问题在日常开发、维护中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。

2019-11-01 08:49:07

JVM 监控 性能
Windows10 鼠标还能这么玩,看一下这款开源良心小工具
我们知道Windows10对用户操作进行了很多人性化的改进,例如触摸板就学习了macOS的很多手势,效率大大提升。但这改动是针对触摸板的,对于传统的鼠标,Windows10并没有进行太多的操作优化。

2020-11-13 07:27:26

Windows10
强大JVM监控工具
在生产环境中,经常会遇到各种各样奇葩的性能问题,所以掌握最基本的JVM命令行监控工具还是很有必要的。

2021-07-08 06:47:19

JVM 监控 工具
首先,看一下这个...
毫无疑问,预测性维护预测计划外停机事件和质量偏差的能力被证明是游戏规则的改变者,预测性维护可能是最吸引制造商采用物联网的商业用例。

2019-06-17 05:00:53

预测性维护 物联网 IOT
【vite】你不知道小妙招,确定不看一下吗?
publicDir限定直接访问的静态资源本文通过列举处理点,逐一提供案例+debug截图+源码分析的方式,让大家理解静态处理的使用和底层原理。

2021-06-24 07:54:20

vite 静态处理 public
Oracle监控常用工具
以下的文章主要是描述在Linux操作系统下Oracle监控的一些常用工具,其中包括top、Ps、还有Kill、等一些工具的介绍。

2010-04-19 14:37:14

Oracle监控
这些升级 你应该看一下
苹果公司召开秋季发布会,除了推出新iPad和AppleWatch,还宣布了iOS14正式版的推送日期。今天,用户已经能看到iOS14正式版的推送。

2020-09-17 09:18:49

iOS 14 苹果 推送
我们通过例子来看一下
tee命令的结果是,你既可以在屏幕上看到命令的输出,同时还可以将输出保存到文件中。

2022-11-09 11:17:24

tee 命令
强烈建议|转行Python最好看一下这篇文章
Python现在非常火,语法简单而且功能强大,很多同学都想学Python!最近陆陆续续有很多小伙伴问我,学Python到底应该做什么,从事哪种岗位。下面是我们工作圈里面一些同学的苦恼。

2018-12-04 15:50:03

转行 Python 爬虫
快来看一下
电影《终结者》很多人都看过,其实现实中已经有类似于终结者的机器人出现了,但是他们并不像电影中的那样残暴无比,他们叫做人工智能。

2018-12-21 15:40:33

网络工具“瑞士军刀”了解一下
今天来介绍这个网络工具界的“瑞士军刀”nc(netcat),它短小精悍,是网络调试利器,它到底有何能耐呢?

2019-06-24 09:57:39

网络 工具 调试
你得先看一下这个自检表
现在,很多公司都希望寻求物联网来提高产品竞争力,用来超越对手或者提高产品利润如果说您也正在考虑采购物联网设备,有些因素你需要慎重考虑一下。

2018-12-20 11:20:47

物联网设备 物联网
Java内存泄露监控工具JVM监控工具介绍
本文将对JVM监控工具jstack,jconsole,jinfo,jmap,jdb,jstat进行详细的介绍,具体内容请看下文。

2012-03-02 14:20:46

Java JVM
JVM监控工具用法指导
通过JVM监控工具的使用可以及时发现问题,剔除安全隐患,这里向大家描述一下常用的几个JVM监控工具的用法,希望对你的学习有所帮助。

2010-09-27 15:39:37

JVM监控工具
我把JVM类加载器整理了一下
学习JVM这个新的技术,我也分为了3个板块来学习:JVM类加载器,JVM内存结构,JVM垃圾回收这三个板块来学习,今天这篇文章讲的是JVM类加载器。

2020-07-23 07:26:49

JVM 类加载器

深圳SEO优化公司坑梓网站推广工具坪山营销网站大鹏营销型网站建设西乡seo优化木棉湾企业网站建设丹竹头SEO按天计费南澳网站建设广州SEO按天收费同乐网站搜索优化南联百姓网标王同乐seo排名盐田百度标王深圳品牌网站设计罗湖SEO按效果付费大鹏网站改版大运建设网站福田百搜词包盐田网站关键词优化布吉网站优化按天扣费南联网站优化深圳网站优化按天计费木棉湾网站seo优化同乐网站建设观澜网站推广系统深圳百度seo吉祥网站优化推广南澳企业网站改版盐田推广网站荷坳模板推广南澳网站推广方案歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化