Arthas JFR 命令完全指南:在运行中 Java 进程上动态启停 Java Flight Recorder 记录

发布时间:2026/9/19 23:24:47

Arthas JFR 命令完全指南:在运行中 Java 进程上动态启停 Java Flight Recorder 记录 Arthas JFR 命令完全指南在运行中 Java 进程上动态启停 Java Flight Recorder 记录【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthas本文是 Arthas 中jfr命令的完整实战指南。jfr命令允许你在程序动态运行期间启动、查询、转储和停止 Java Flight RecorderJFR记录无需重启应用即可采集 JVM 与应用的诊断数据适用于生产环境排障、性能剖析与压测分析。读完本文你将掌握jfr start / status / dump / stop四个子命令的全部参数与典型用法并理解其底层实现原理。JFR 是什么为什么要在 Arthas 中使用它Java Flight RecorderJFR是用于收集正在运行的 Java 应用程序的诊断与剖析数据的工具它集成在 Java 虚拟机JVM内部几乎不会造成性能开销因此即使在负载较高的生产环境中也可以安全使用。JFR 通过记录event事件来工作事件在特定时间点发生在 JVM 或 Java 应用程序中每个事件都有一个名称、一个时间戳和一个可选的payload有效负载。负载是与事件关联的数据例如 CPU 使用率、事件前后的 Java 堆大小、锁持有者的线程 ID 等。传统上开启 JFR 需要 JVM 启动参数或在外部使用jcmd JFR.start而 Arthas 的jfr命令把这一能力内聚到诊断交互中只要通过java -jar arthas-boot.jar挂载到目标进程即可随时开始记录、随时查看状态、随时把数据落盘。其在线交互教程英文位于 site/docs/en/doc/jfr.md中文版本见 site/docs/doc/jfr.md。注意JDK8 从8u262版本开始才支持 JFRJDK 11 默认可用。在使用jfr命令前请先确认目标 JVM 的版本满足要求。命令结构与全部参数说明jfr命令的基本运行结构是jfr cmd [actionArg]其中cmd是要执行的操作支持start、status、dump、stop四个子命令actionArg为属性名参数模式。在 JFRCommand.java 的命令描述中同样列出了这四种用法并支持 TAB 键对子命令名进行自动补全见complete方法。完整参数说明如下表参数名称参数说明cmd要执行的操作支持【startstatusdumpstop】actionArg属性名模式[n:]记录名称recording name如-n myRecording[r:]记录 id 值recording id如-r 1[dumponexit:]程序退出时是否要 dump 出 .jfr 文件默认 false[d:]延迟多久后启动 JFR 记录支持带单位配置例如 60s、2m、5h、3d不带单位就是秒默认无延迟[duration:]JFR 记录持续时间支持单位配置不带单位就是秒默认一直记录forever[s:]采集 Event 的详细配置文件server-side template默认是 default.jfc位于$JAVA_HOME/lib/jfr/default.jfc[f:]将输出转储到指定路径结果文件[maxage:]缓冲区数据最大文件记录保存时间支持单位配置不带单位就是秒默认不限制[maxsize:]缓冲区的最大文件大小支持单位配置不带单位是字节m 或 M 代表 MBg 或 G 代表 GB[state:]jfr 记录状态new、delay、running、stopped、closed其中时间的解析逻辑在源码parseTimespan方法中实现s/m/h/d后缀分别表示秒、分钟、小时、天不带单位时按纳秒数值处理大小解析逻辑在parseSize方法中实现b/k/m/g后缀分别对应字节、KB、MB、GB参见 JFRCommand.java。启动 JFR 记录最简单的启动方式是不带任何参数$ jfr start Started recording 1. No limit specified, using maxsize250MB as default.默认情况下开启的是 default 模板的 JFR 记录。从源码看start子命令在未指定-s时会自动设置settingsdefault并调用Configuration.getConfiguration(settings)加载默认采集配置当duration、maxage、maxsize均未指定时会自动兜底设置maxsize250MB见 JFRCommand.java。启动 JFR 记录并指定记录名、记录持续时间与文件保存路径$ jfr start -n myRecording --duration 60s -f /tmp/myRecording.jfr Started recording 2. The result will be written to: /tmp/myRecording.jfr当指定-f时源码会通过r.setDestination(Paths.get(filename))把录制结果直接写入目标文件未指定名称时记录会被自动命名为Recording-id形式如Recording-1、Recording-2。若指定了-d延迟参数则记录先进入delay状态并返回 scheduled to start 提示到期后才真正开始。查看 JFR 记录状态默认查看所有 JFR 记录信息$ jfr status Recording: recording1 nameRecording-1 (running) Recording: recording2 namemyRecording durationPT1M (closed)查看指定记录 id 的记录信息$ jfr status -r 1 Recording: recording1 nameRecording-1 (running)查看指定状态的记录信息$ jfr status --state closed Recording: recording2 namemyRecording durationPT1M (closed)status子命令的底层逻辑JFRCommand.java所有记录保存在一个ConcurrentHashMapLong, Recording中不指定-r且指定--state时通过findRecordingByState按状态的字符串形式new、delay、running、stopped、closed过滤否则列出全部记录若当前没有任何记录会提示No available recordings. Use jfr start to start a recording.。转储dumpJFR 记录jfr dump会输出从开始到运行该命令这段时间内的记录到 JFR 文件且不会停止jfr 记录——这在发现问题后先落盘再继续采集的场景下非常有用。指定记录输出路径$ jfr dump -r 1 -f /tmp/myRecording1.jfr Dump recording 1, The result will be written to: /tmp/myRecording1.jfr不指定文件输出路径时默认保存到arthas-output目录下$ jfr dump -r 1 Dump recording 1, The result will be written to: /tmp/test/arthas-output/20220819-200915.jfr源码中dump分支要求必须传入-r记录 id否则提示Failed to dump. Please input recording id未指定-f时通过outputFile()生成默认路径文件名为yyyyMMdd-HHmmss.jfr时间戳格式保存在 Arthas 的输出目录arthas-output下见 JFRCommand.java 与 outputFile 方法。停止 JFR 记录不指定记录输出路径默认同样保存到arthas-output目录下$ jfr stop -r 1 Stop recording 1, The result will be written to: /tmp/test/arthas-output/20220819-202049.jfr注意一条记录只能停止一次。若记录已处于closed或stopped状态再次执行jfr stop会报错Failed to stop recording, state can not be closed/stopped。也可以指定记录输出路径例如jfr stop -r 1 -f /tmp/myRecording.jfr。源码中stop分支会先把记录从 recordings 表移除检查状态后再设置 destination、执行r.stop()并r.close()释放资源见 JFRCommand.java。与dump不同stop是终止录制并最终落盘二者语义切勿混淆。通过浏览器查看 arthas-output 下的 JFR 记录默认情况下Arthas 使用 8563 端口提供 HTTP 服务该默认值定义在 arthas.properties 的arthas.httpPort8563打开 http://localhost:8563/arthas-output/ 即可在浏览器中浏览arthas-output目录下的 JFR 记录结果文件生成的 .jfr 结果文件可以用支持 JFR 格式的工具来查看例如 JDK Mission ControlJMC。此外输出目录本身也可通过配置调整arthas.outputPath属性用于指定输出路径默认值为arthas-output见 arthas.properties运行时若不指定-fdump/stop 产生的文件即落入该目录。命令使用小结与源码索引场景推荐命令直接开启默认记录250MB 上限兜底jfr start指定名称、时长与落盘路径启动jfr start -n myRecording --duration 60s -f /tmp/myRecording.jfr延迟启动如 5 小时后jfr start -d 5h列出全部/指定 id/指定状态的记录jfr status、jfr status -r 1、jfr status --state running不停止采集把已有数据落盘jfr dump -r 1 [-f path]停止记录并落盘jfr stop -r 1 [-f path]浏览器浏览结果文件打开http://localhost:8563/arthas-output/如需深入实现细节可阅读 JFRCommand.java命令参数定义与 start/status/dump/stop 分支逻辑、JFRModel.java命令输出模型以及 arthas.propertiesHTTP 端口与输出路径默认配置。将jfr与其他 Arthas 命令如thread、trace、profiler配合使用可以覆盖从实时线程状态到长期性能剖析的完整排障链路。【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/19 23:24:47

开题报告为什么总是被导师打回来?你可能从第一步就想错了

毕夏AI官网 www.bixiaai.com 毕夏AI写作官网 www.bixiaai.com 毕夏官网 www.bixiaai.com 毕夏智能写作官网 www.bixiaai.com 毕夏AI官网 www.bixiaai.com 微信公众号搜一搜“毕夏AI官网” 一个让无数研究生崩溃的场景 你花了整整两周,读了三十篇文献&#x…

2026/9/19 23:24:47

那个让你不敢点“运行”的按钮,毕夏AI把它拆了

毕夏AI官网 www.bixiaai.com 毕夏AI写作官网 www.bixiaai.com 毕夏官网 www.bixiaai.com 毕夏智能写作官网 www.bixiaai.com 毕夏AI官网 www.bixiaai.com 微信公众号搜一搜 毕夏AI官网 你一定见过这样的场景:数据收回来了,问卷也录完了&#xff0…

2026/9/20 0:29:50

Release check

人工智能AI Agent交互助手工具调用MCP Clients本地部署Agent 工作流RAG 【免费下载链接】zeroclaw Fast, small, and fully autonomous AI personal assistant infrastructure, any OS, any platform — deploy anywhere, swap anything 🦀 项目地址: ht…

2026/9/20 0:29:50

OpenClaw 接 NVIDIA API 连接失败?TaoToken 这样改 openclaw.json

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 0:29:50

Linux安装Anaconda全攻略:环境变量配置与虚拟环境实战

让你在Linux上装Anaconda这件事,我一向不建议靠网上零散的问答拼操作流程——今天这个教程,我会把从下载安装到环境变量配置、再到创建虚拟环境整套路径完整走一遍。毕竟我早期在服务器上部署Python环境时,因为缺失底层依赖、路径没配对这类小…

2026/9/20 0:29:50

微信小程序工具测评,Cline 报 401?TaoToken 的 Base URL 这样写

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 0:24:50

Cesium体积云渲染实战:基于RayMarching的Shader实现全解析

两年前做数字孪生项目时,客户盯着我们搭好的三维地球看了半天,最后问了一句:能不能加朵云。就是这个需求,让我在Cesium里折腾了将近一个月。当时市面上的方案屈指可数,官方没提供云组件,网上能搜到的大多是…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/20 0:04:49

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/20 0:04:49

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/18 14:13:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/18 14:13:02

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/18 14:13:02

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码