【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

JAX London:使用 Java 飞行记录器实现生产环境的性能分析

  • 2016-10-27
  • 本文字数:1239 字

    阅读完需:约 4 分钟

在今年的 JAX London 上,来自甲骨文 Java 平台组的 Ola Westin 介绍了 Java 任务控制(Java Mission Control,JMC)和 Java 飞行记录器(Java Flight Recorder,JFR)的功能。

Westin 首先在整体上介绍了 JMC 和 JFR,然后为观众展示了如何创建和分析记录(recording)并为观众提供了一个样例。在本文中,InfoQ 将会带领读者回顾 Westin 的演讲。

Java 任务控制概览

Java 任务控制是一个图形化的界面,它借助 JMX 控制台(提供了服务器的原始视图)和 Java 飞行记录器(Java Flight Recorder)(收集、分析和诊断应用的数据)的帮助,能够可视化 Java 虚拟机(Java VM)的行为。

JMC(jmc 命令)打包在了 Java 开发工具集中(JDK),位于 bin 目录下。额外的日志可以通过使用 –consoleLog –debug选项来启用。各种体验式的插件(比如针对 DTrace、JMX 控制台的插件)也可以进行在 JMC 中进行下载。

Java 飞行记录器概览

Java 飞行记录器会收集 Java 应用程序以及 Java VM 的行为信息。JFR 构建在了 Java VM 之中,能够为用户提供运行时的信息。使用 JFR 并不会影响其他的 Java VM 优化,它的最小开销会小于 2%。

JFR 有不同的事件,比如即时事件(instant event)、持续事件(duration event)以及可请求事件(request-able event)。即时事件只会在某个时间点发生(比如线程启动),因此它的开销最小,但是持续事件(如垃圾收集等)是基于阈值的,与之类似,可请求事件(比如方法分析采样)基于可配置的时间段,因此这些事件的开销差异很大。

JFR 的采样性能分析器并不需要线程处于安全点上,也不会记录每个方法的调用(它只会探测热点方法)。按照该演讲所述,对于调用原生方法的线程,并没有与之相关的采样。

有两种不同类型的记录:固定时间(性能分析)的记录以及持续的记录,它们都会 dump 到一个文件中。

创建记录

要使用 JFR 来创建记录,我们需要在启动 JVM 的时候添加如下的命令行选项:-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

从 Java 8 update 40 开始,我们还可以在运行时通过 JMC 或者jcmd方案来创建 JFR 记录。

如下的三幅图片分别展现了如何利用上述的三种方案来创建 JFR 记录。

我们还可以按照下图的方式记录远程的系统:

分析记录

在演讲中,Westin 强调在进行任何的深入调查之前,提出正确问题是非常重要的。接下来他给出了一个样例,这个样例阐述了“热点方法”的问题,如下所示:

在这里,当“Hot Methods” tab 选中的时候,我们可以看到 LinkedList.indexOf(Object) 占据了总采样数量的 97.35%。在深入研究调用栈的时候,我们发现在链式列表中有一个 contains(Object) 方法,这个方法需要 O(n) 的迭代。为了解决这个问题,Westin 运行了另外一个 JFR 记录,将 LinkedList 替换为 HashSet,它的结果如下所示:

随后,Westin 又介绍了两个样例:其中一个是关于线程竞争的,另一个是因为自动装箱所导致的内存分配。最后,他进行了总结展望,相关的 slide 如下所示:

查看英文原文 JAX London: Production Time Profiling Using Java Flight Recorder

2016-10-27 19:006412

评论

发布
暂无评论
发现更多内容

Linux之用户管理、权限管理、程序安装卸载

C++后台开发

Linux 后端开发 linux开发 Linux服务器开发 C++开发

调用链路上千条,如何观测 Nacos 的运行状态

阿里巴巴云原生

阿里云 微服务 云原生 naocs

谁能破解客户数字化困局?

ToB行业头条

如何通过 NFTScan 浏览器捕获 NFT 投资机会

NFT Research

区块链 NFT 数据基础设施

《大厂面试》之JVM篇21问与答

钟奕礼

Java java程序员 java面试 java编程

深度学习 | 如何开发、部署 Serverless 应用?

阿里巴巴云原生

阿里云 Serverless 云原生

综合实验——高级网络应用检测

我叫于豆豆吖.

11月月更

无需重启应用,动态采集任意点位日志

阿里巴巴云原生

阿里云 云原生

PHP反序列化漏洞解析

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

Baklib知识分享 | 搭建企业在线帮助中心的最佳攻略

Baklib

5分钟实现「视频检索」:基于内容理解,无需任何标签

Zilliz

人工智能 Towhee 视频检索

华为云发布1+3+M+N全球云基础设施布局 全面推动汽车产业数智升级

科技热闻

案例 | 九科信息助力某大型证券公司业务部数智化转型

九科Ninetech

【iOS逆向与安全】frida-trace入门

小陈

移动端 iOS逆向 ios安全

如何做好成熟完整的企业团队知识管理?

Baklib

团队管理 知识管理

银行APP用户体验外滩峰会圆满落幕!易观分析赋能用户体验体系,助力体验提升

易观分析

App 银行 易观

磁盘占用高问题如何排查?三步教你搞定

OceanBase 数据库

主成分分析PCA与奇异值分解SVD-PCA中的SVD

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

链路状态路由协议 OSPF (三)

我叫于豆豆吖.

11月月更

埃森哲发布《2022中国企业数字化转型指数》,如何通过自动化工具打造技术底座

SoFlu软件机器人

Redis 持久化机制演进与百度智能云的实践

Baidu AICLOUD

数据库 Redis内核

链路状态路由协议 OSPF (二)

我叫于豆豆吖.

11月月更

Wallys/ industrial mini pcie card/2x 2 5G /High power Radio card

Cindy-wallys

QCA9882 2x 2 5G high power

FAQ是什么?该如何编辑FAQ?

Baklib

2022年10月视频用户洞察:卡塔尔世界杯揭幕,全民体育盛宴开启

易观分析

视频 世界杯

快围观!助力 TDesign 无障碍改造活动来了!

TDesign

无障碍

QUIC学习入门概念及资料整理

黄继承

QUIC

芯启源加入龙蜥社区,推动集成电路和DPU芯片创新落地

OpenAnolis小助手

开源 龙蜥社区 CLA 芯启源

深度解读|NebulaGraph x 阿里云计算巢,云上构建超大规模图数据库

阿里云弹性计算

图数据库 计算巢

Apisix网关快速入门实践

IT巅峰技术

十分钟带你全面解析Promise、generator、async类同步编程!

好程序员IT教育

JavaScript Promise

JAX London:使用Java飞行记录器实现生产环境的性能分析_Java_Monica Beckwith_InfoQ精选文章