专栏首页架构专题开车了,JMC坐稳 (jfr)

开车了,JMC坐稳 (jfr)

今天我们要开的车是,江铃汽车。全称Jiangling Motors Corporation,简称JMC。

一车在手,吃喝不愁。车作为男人的第二个老婆,拥有一辆JMC是所有成功男人的梦想。打开小小的车窗,任嘶吼的狂风揉捏自己的面庞,是一种让人无比享受的存在。

列车驶向何处,前方又是何方,全在掌舵者一念之间。

程序员掌舵,当然与众不同。我们今天的列车,就是jmc监控工具。

呸,撞车了。

与JMC撞车的,也是jmc,全称Java Mission Control,是故障排查的一大利器。

在世风日下的今天,强行扭正jmc的坐姿,也算是一股清流。它和jvisualvm一样,都被jdk给抛弃了,因为长得太胖,现在需要单独下载。

先看它的图标。

再看它的界面。

Flight Recorder

你可以看到,它是一个图形化的工具,生产环境中使用必然受到限制,你需要首先开通JMX才可以使用。但我习惯在压测的时候才用它。

因为它有一个Flight Recorder功能。

为什么里面这么多按钮,我仅仅提到Flight Recorder这个东西呢?因为其他东西都是点吧点吧就可以理解的,xjjdog要是再介绍一下的话,就像是智障一样。

但是Flight Recorder必须要详细描述下,因为智商不到80不好理解它。

Flight Recorder源自飞机的黑盒子,一看就是用来录制信息,然后事后分析的。在Java11中,它可以通过jcmd命令进行录制了。

主要有5个命令:configure、check、start、dump、stop。执行顺序的话,先start再dump,最后stop。例如:

jcmd <pid> JFR.start

jcmd <pid> JFR.dump filename=recording.jfr

jcmd <pid> JFR.stop

先来看下它的好处:

在保证低开销的基础上,JFR 提供的能力也令人眼前一亮。

例如:我们无需 BCI 就可以进行 Object Allocation Profiling,终于不用担心 BTrace 之类把进程搞挂了。

对锁竞争、阻塞、延迟,JVM GC、SafePoint 等领域,进行非常细粒度分析。甚至深入 JIT Compiler 内部,全面把握热点方法、内联、逆优化等等。

JFR 提供了标准的 Java、C++ 等扩展 API,可以与各种层面的应用进行定制、集成,为复杂的企业应用栈或者复杂的分布式应用,提供 All-in-One 解决方案。而这一切都是内建在 JDK 和 JVM 内部的,并不需要额外的依赖,开箱即用。

录制

录制谁好呢?还是录制一个tomcat吧。下图是录制了一分钟之后的结果,可以看到左边那一串长长的结果列表。

通过这些数据,可以清楚的了解到这一分钟时间内,整个操作系统以及JVM的所有数据情况。这花花绿绿的颜色,一看就知道是很厉害的样子。

线程

点击C2编译器线程,可以看到详细的热点类,以及方法内联后的代码大小。线程的Wait、Idea、Block等各种状态和时序,都能在这里看到。C2此时在疯狂运转。

内存

可以看到种类型的数据,每个时刻所申请的内存大小。这在排查一些内存泄漏问题的时候,不是一般的有用。

锁实例可以看到期间出现的所有Lock实例,以及它的使用信息。

文件和Socket

当然,对文件和Socket的操作也淋漓尽致,一目了然。包括什么时候读了多少数据,从哪里读写的,都可以从栈信息里看到。

方法调用

方法调用信息和排行。

垃圾回收

对垃圾回收的信息监控也是比较详细的。比如什么时候发生了垃圾回收,用的什么垃圾回收器,耗时,甚至是发生的时机等,都可以在这里看到。

JIT

编译这里,显示了更加详细的JIT相关信息,包括生成后的CodeCache大小。

TLAB

神奇的是,它连TLAB区域的申请信息都给录制了,不得不说是一个神器。

TLAB的全称是Thread Local Allocation Buffer,JVM默认给每个线程开辟一个buffer区域,用来加速对象分配。这个buffer,就放在Eden区。

这个道理和Java语言中的ThreadLocal类似,避免了对公共区的操作,以及一些锁竞争。

End

JFR,全称Java Flight Recorder,我们今天对它的介绍,就结束了。

车已经到站了,请下车的乘客做好准备,祝您旅途愉快。

本文分享自微信公众号 - 小姐姐味道(xjjdog),作者:小姐姐养的狗

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你能像鸟一样,边xx边oo么?CPU给我们的启示

    从鸟嘴到鸟大肠,整个过程是串行的。虽然有些曲折,但方向是单一的,出口是一定的。只要鸟能够克服一些心理上的不悦,它就能办得到。

    xjjdog
  • 《调教命令行04》触碰Linux的每个角落(长文)

    想要了解一个人,就先要了解他的灵魂。可是别说是灵魂了,就连一个真心的笑容,你在生活中也很难见到。更多的是菩萨手段,修罗心肠。很多人喜欢孩子的原因,就是因为他们悲...

    xjjdog
  • 昔日教人类用火的prometheus,如今在努力报警

    像我这么热爱野外生活的人,初冬时节,还找了个隐蔽的地方去野炊。现在的社会,为了找找到这么一个静谧的存在,我可谓煞费苦心。

    xjjdog
  • 锁首技术总结

    在公司实习也有一个月了,学到不少东西,不知不觉就要大四了,回首漫漫安全路,不禁感慨万千:我入安全的时间比较晚,大一大二跟着老师参加 Android 移动应用开发...

    信安之路
  • ns3生成.pcap文件

    相关函数有EnablePcap()和EnalePcapAll(),     支持第一个函数的类有ns3::YansWifiPhyHelper  PointToP...

    py3study
  • 热点 | 又一起“汉芯事件”?融资2.5亿的国产浏览器之光竟是谷歌Chrome换层皮

    今天,全网被一则新闻刷屏,即最近宣布完成2.5亿C轮系列融资的“红芯”公司,在网友将其软件exe文件解压再解压,再将IInstall文件解压一遍后竟然发现了,谷...

    镁客网
  • 飓风“桑迪”路径图的制作

    飓风"桑迪" (Sandy)横扫美国东部,并在纽约附近登录,带走113条人命,并造成500亿美元的损失,桑迪也被列为美国历史上最昂贵的飓风。我们今天利用之前介绍...

    Vamei
  • 人工智能的新offer:东京奥运会竞技体操裁判员

    上个月,国际体操联合会(FIG)宣布,将日本富士通公司开发的「竞技体操辅助打分系统」用于 2019 年 FIG 主办的系列体操赛事上。系统将于明年的体操世界杯系...

    机器之心
  • 分享几段能经常用到的前端代码

    在做一个对比的时候,页面限制有点窄,使用 Bootstrap table 的时候,内容超出居然不换行,全是按照一行显示

    沈唁
  • 错误消息Customer classification does not exist when downloading

    After I create a customer in ERP via tcode VD01 and try to download it into CRM ...

    Jerry Wang

扫码关注云+社区

领取腾讯云代金券