速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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

评论

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

视频下载工具Downie 4 for Mac

Mac相关知识分享

视频下载软件

云服务器的公网IP是公用的吗?

Ogcloud

云主机 云服务器 云主机厂商 云服务器租用

引领行业数字变革,天翼云出席IDC年度盛典暨颁奖典礼!

天翼云开发者社区

云计算 IDC

带参数的Python装饰器让你的代码更优雅

LLLibra146

Python 装饰器

3DCAT实时云渲染赋能2024广东旅博会智慧文旅元宇宙体验馆上线!

3DCAT实时渲染

实时云渲染 元宇宙解决方案 智慧文旅元宇宙 元宇宙体验馆

与南方航空牵手合作,望繁信科技朋友圈再扩大!

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 望繁信科技

鸿蒙开发案例:通过三杯猜球学习显示动画

zhongcx

乘风破浪!天翼云为出海企业打造全球云服务解决方案!

天翼云开发者社区

云计算 IDC

SaaS架构:多租户系统架构设计

快乐非自愿限量之名

架构 SaaS

新特性速览! Sermant 2.1.0版本重磅发布

华为云开源

开源 字节码 微服务治理 sermant

视觉特效软件包FxFactory 8 Pro for Mac

Mac相关知识分享

数据结构 - 链表

EquatorCoco

数据结构 链表

干货:TikTok限流、0播放问题怎么解决?

Ogcloud

TikTok tiktok运营 TikTok养号 tiktok矩阵 tiktok限流

3分钟理清QPS、TPS、RT 以及它们之间的关系

高端章鱼哥

一张图带你了解.NET终结(Finalize)流程

不在线第一只蜗牛

.net

Spring Boot集成Spring Security之自动装配

快乐非自愿限量之名

spring Spring Boot

我们用GLM-4-Plus搞了个“阅读智能体”,工作效率提升了300%

Alter

薇美姿舒客B2B订货平台:抢占末端渠道先机,实现持续增长

赛博威科技

视频转 GIF 工具Video GIF converter for Mac

Mac相关知识分享

远程桌面连接工具Microsoft Remote Desktop for Mac

Mac相关知识分享

小说

AIGCDesign 开放式跨端 AI 组件解决方案

京东零售技术

前端 AIGC

专业矢量图形设计工具Sketch for mac

Mac相关知识分享

Docker部署PhotoPrism、Immich图片管理应用,无需公网IP远程访问教程

贝锐

NAS Docker 镜像

API在电商之中的作用是什么?

秃头小帅oi

低代码开发平台开启智能制造新工具时代

不在线第一只蜗牛

低代码 制造业

JavaScript 异步编程入门

FunTester

以生态共建推动产业发展,深开鸿亮相2024开放原子开源生态大会

Geek_2d6073

草料二维码产品更新速览!优化二维码标签下载弹窗、企业专属独立登录页等

草料二维码

无代码平台 草料二维码 草料二维码无代码

公司党委书记、董事长、总经理胡志强出席“国企改革大家谈”分享天翼云改革经验

天翼云开发者社区

云计算 天翼云

Docker-Compose 应用可观测性最佳实践

观测云

Docker-compose

天翼云完成首个国产化万卡训练,MFU达到国内领先水平!

天翼云开发者社区

云计算 云服务 云平台 天翼云

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