前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开车了,JMC坐稳 (jfr)

开车了,JMC坐稳 (jfr)

作者头像
xjjdog
发布2020-04-08 15:39:12
9360
发布2020-04-08 15:39:12
举报
文章被收录于专栏:架构专题
今天我们要开的车是,江铃汽车。全称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。例如:

代码语言:javascript
复制
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,我们今天对它的介绍,就结束了。

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小姐姐味道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Flight Recorder
  • 录制
    • 线程
      • 内存
          • 文件和Socket
            • 方法调用
              • 垃圾回收
                • JIT
                  • TLAB
                  • End
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档