写点什么

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:006619

评论

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

故障测试入门指南

FunTester

“前沿思享会:探索AI+材料新边界”闭门研讨会顺利召开

中国信通院AI Infra工作组

《科研智能(AI4R&D)——人工智能驱动的研发新范式》正式发布

中国信通院AI Infra工作组

Go 必知必会:Interface灵活而强大的类型系统

王中阳Go

接口 interface 数据类型 GO语言编程

SSH 配置文件管理工具SSH Config Editor Pro for Mac

Mac相关知识分享

VMware Live Site Recovery 9.0.2 发布下载,新增功能概览

sysin

vmware esxi

Apache Doris 2.1.6 版本正式发布

SelectDB

数据仓库 数据分析 LakeHouse 物化视图

LED厂家告诉您LED玻璃幕墙如何设计

Dylan

设计 艺术 LED LED display LED显示屏

活动预告:“大模型时代下AI中台”主题沙龙

中国信通院AI Infra工作组

海尔连续3年蝉联生态品牌认证“领航者”,飞书获评“突破者” ,共建生态绿洲

ToB行业头条

Amazon Bedrock 模型微调实践(二):数据准备篇

亚马逊云科技 (Amazon Web Services)

人工智能

中国信通院可信人工智能基础平台(AI Infra)评估工作正式启动

中国信通院AI Infra工作组

大模型训练平台标准第三次研讨会即将召开

中国信通院AI Infra工作组

探索高质量大模型推理平台建设路径——大模型推理标准第二次研讨会即将召开

中国信通院AI Infra工作组

探索高质量大模型训练平台建设路径——大模型训练标准第三次研讨会顺利召开

中国信通院AI Infra工作组

万界星空科技电线电缆行业MES系统核心功能

万界星空科技

mes 万界星空科技 电线电缆行业 电线电缆mes

中国人工智能产业发展联盟正式发布《科研智能(AI4R&D)——人工智能驱动的研发新范式》

中国信通院AI Infra工作组

基于京东API返回值的商家商品管理策略优化

代码忍者

API 接口 API 测试 pinduoduo API

金融安全架构设计中的反思

I

安全架构 金融服务安全 安全架构设计

可信AI评估|中国信通院可信AI“大模型一体机”第二批评估正式启动

中国信通院AI Infra工作组

虚拟人,如何用好这个“外挂”?一定要看看这本书!

博文视点Broadview

mac苹果电脑系统优化工具:CleanMyMac X for mac 中文激活版

你的猪会飞吗

mac破解软件下载 CleanMyMac X破解版 CleanMyMac X中文

全能视频处理软件VideoProc Converter for mac

Mac相关知识分享

excel表格Excel 2021 for Mac

Mac相关知识分享

助力企业降低成本,ByteHouse打造新一代“弹性”云数仓

字节跳动数据平台

数据库 大数据 云原生 Clickhouse 数仓

中国信通院边缘人工智能平台标准首轮评估正式启动

中国信通院AI Infra工作组

Splunk Enterprise for Mac可视化数据分析收集软件

Mac相关知识分享

一文说清楚ETL与Kafka如何实现集成

RestCloud

kafka 数据处理 分析 ETL 数据集成

中国信通院启动科研智能(AI4R&D)重点标准化方向及参编专家征集工作

中国信通院AI Infra工作组

阿里巴巴拍立淘API返回值:商家优化商品信息的深度指南

代码忍者

API 测试 pinduoduo API

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