About JDKFlightRecorder--人工翻译
JFR是什么
JDK Flight Recorder是一个工具,用于收集有关JVM以及在JVM上运行的Java程序的诊断和分析数据。
- 集成到Java虚拟机(JVM)中,
- 使用默认设置时,性能影响小于1%。几乎不产生性能开销,因此即使在负载很重的生产环境中也可以使用。
JFR的优点
提供更好用的数据:JFR使用的一致数据模型使交叉引用和过滤事件变得更容易
允许第三方程序提供事件:一组API允许JFR监视第三方应用程序,包括WebLogic Server和其他Oracle产品。
降低企业成本:JFR使您能够花费更少的时间诊断和排除故障,减少运营成本和业务中断,在出现问题时提供更快的解决时间,并提高系统效率。
JFR使用场景
profilling(程序画像分析):JFR持续保存有关运行系统的大量数据。这些分析信息包括线程样本(显示程序在何处花费时间)、锁分析和垃圾收集等详细信息。
Black Box Analysis(黑盒分析):JFR不断地将信息保存到循环缓冲区中。当检测到异常时可以访问该信息以查找原因。
Support and Debugging(官方支持与调试):在联系Oracle官方支持以帮助诊断Java应用程序的问题时,JFR收集的数据可能是必不可少的。
JFR事件
Event(事件),是JFR的基石,JFR基于事件收集数据,事件在JVM或Java程序中的特定时间点发生。每个事件都有名称、时间戳和可配置的有效负载。有效负载是与事件关联的数据,例如,CPU使用率、事件前后的Java堆大小、锁保持器的线程ID等等。大多数事件还包含事件的所属线程、堆栈跟踪以及持续时间等信息。借助事件提供的信息,可以重新构建出JVM和Java程序运行时的详细信息。
JFR事件根据采集方式可以分为三种
- 持续时间事件:需要一定时间去发生,并在结束时进行记录的事件。你可以为持续时间事件设置阈值,以便只记录持续时间超过阈值的事件。这对于其他类型的事件是不可能的
- 即时事件:发生时立即记录
- 样本事件,也叫做可请求事件(requestable event)。以周期性记录样本事件来获取系统活动样本。其中这个采样频率是可配置的。
JFR以极高的细节水平监控运行中的系统。这会产生大量的数据。要使开销尽可能低,建议将JFR监控的事件类型限制为您实际需要的类型。在大多数情况下,持续时间非常短的事件是无意义的,因此建议将JFR监控持续时间设置为高于对于事件来说有意义的阈值。
JFR数据流
二进制格式的JFR记录文件对于应用程序的读写是非常紧凑和高效的。
JFR从JVM(通过内置API)和Java程序(通过JFR API)收集数据。这些数据被存储在小型线程本地缓冲区中,然后再被刷新到全局内存缓冲区中,最后,再被写入磁盘。磁盘的写入操作开销很大,所以你应该小心地选择需要被JFR监控的事件来减少磁盘的写入操作。
在各种缓冲器之间没有信息重叠。一个数据块可以在内存或磁盘中使用,但不能同时在这两个地方使用。这会导致:
如果电源突然故障,尚未刷新到磁盘缓冲区的数据会丢失。
JVM崩溃可能会导致核心文件(即内存缓冲区)或磁盘缓冲分区中的一些数据可用。但JFR不提供合并这些缓冲区的功能。
在JFR收集的数据可供使用之前,会有一些延迟(例如,在使其可见之前,必须将其移动到不同的缓冲区)。
JFR记录文件中的数据可能不是按时间顺序排列的,因为数据是从多个线程缓冲区中以块的形式收集的。
在某些情况下,JVM会删除一些事件的顺序以确保JVM不会崩溃。任何无法快速写入磁盘的数据都将被丢弃。发生这种情况时,JFR记录文件将包含有关受影响时间段的信息。此信息也将记录到JVM的日志记录工具中
JFR可以配置为不向磁盘写入数据。在此模式下,全局缓冲区作为一个循环缓冲区来使用,当缓冲区满时丢弃日期最早的数据。这种开销非常低的模式仍然收集根本原因问题分析所需的所有重要数据。虽然全局缓冲区中只保存最新数据,但是通过操作或者当监控系统检测到问题时仍然可以把数据根据需要写入磁盘。在此模式下,只有最后几分钟的数据可用,因此它只包含最近的事件。如果需要获取长时间内的完整操作历史记录,请在事件写入磁盘时使用默认模式。
JFR架构
JFR由以下两个组件构成
-
JFR运行时引擎:在JVM内部产生监控记录的引擎
JFR运行时引擎又由下面两个组件构成
- 资源代理:控制缓冲区、磁盘的I/O、MBean等资源。此组件还提供了一个由C和Java代码编写的动态库,还提供了一个与JVM无关的纯Java实现
- 数据生产者:从JVM以及Java程序或者通过一个JavaApi从第三方应用程序收集事件数据
-
用于JMC的JFR插件,使您能够从JMC客户端使用图形化界面启动、停止以及配置JFR监控,以及对监控产生的JFR文件的查看
相关文章:
About JDKFlightRecorder--人工翻译
JFR是什么 JDK Flight Recorder是一个工具,用于收集有关JVM以及在JVM上运行的Java程序的诊断和分析数据。 集成到Java虚拟机(JVM)中,使用默认设置时,性能影响小于1%。几乎不产生性能开销,因此即使在负载很…...
【计算机系统基础3】数据的存储与运算
【计算机系统基础3】数据的存储与运算 3.程序调试与实践:数据存储与运算3.1真值与机器数3.1.1整数的编码 3.2数据的存储3.3数组的对齐3.4数据类型的转换3.4.1整数之间的数据类型转换3.4.2整数与浮点数之间的转换3.4.3自动类型转换 3.5浮点数的表示和运算--IEEE 7543…...
【算法】快速排序
目录 核心思想: 过程: 演示: 第一趟: 第二趟: 代码: 核心思想: 从待排序列中取一个元素作为中心,所有比它小或相等的元素一律放在前面, 所有比它大的元素放在后面&…...
【移动端网页布局】流式布局案例 ③ ( 实现搜索栏功能 | 伪元素选择器 | 子绝父相 | 外边距塌陷处理 | 二倍精灵图处理方案 )
文章目录 一、搜索栏样式及核心要点1、实现效果2、自动伸缩搜索栏实现3、搜索栏父容器设置4、搜索栏左右两侧的按钮盒子5、搜索栏盒子6、二倍精灵图处理方案 二、完整代码示例1、HTML 标签结构2、CSS 样式3、展示效果 一、搜索栏样式及核心要点 1、实现效果 上一篇博客中 , 完成…...
【C++修炼之路】30.可变参数模板包装器
每一个不曾起舞的日子都是对生命的辜负 C11之可变参数模板&&包装器 前言一.可变参数模板的首次登场二.参数包展开2.1 递归函数方式展开参数包2.2 逗号表达式展开参数包 三.容器的emplace方法四.包装器4.1 什么是function4.2 function包装器的作用4.3 function的实际用途…...
Linux防火墙之firewalld基础
一、firewalld概述 firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。 firewalld和iptables都是用来管理防火墙的工具(属于用户态)来定义防火墙的…...
GitLab CI/CD
CI/CD 简介 CI/CD 简单来说就是可以自动化编译、测试、打包我们的代码。 GitLab CICD的使用 首先需要安装gitlab-runner。 在GitLab 中,runners 是运行 CI/CD 作业的代理。我们的对代码的作业都是在runner上去执行的。我们可以在本地、服务器、等任意一个联网设…...
PHP复习资料(未完待续)
(未完待续,请持续关注此板块) 【计科三四】雪课堂PHP期末模拟题:https://ks.wjx.top/vm/tUAmjxq.aspx# 【计科一二】PHP第一章练习题 https://ks.wjx.top/vm/QnjHad4.aspx# 【计科一二】PHP第二章练习题 https://ks.wjx.top/vm/h2…...
【python】pytorch包(第二章)API使用与介绍
1> nn.Module (用于构建模型的底层逻辑) 介绍 nn.Module 是 torch.nn 中的一个类,是pytorch中自定义网络的基类 __init__需要调用super方法,继承父类属性和方法forward方法必须实现,用来定义网络的向前计算的过程…...
Linux驱动基础(SR501人体感应模块)
文章目录 前言一、SR501模块介绍二、设备树编写三、驱动编写1.确定主设备号2.编写file_operations结构体3.注册file_operations结构体4.出口函数编写5.probe函数和remove函数编写6.中断编写7.测试程序编写8.全部驱动程序 总结 前言 本篇文章将给大家介绍一下SR501驱动程序的编…...
Android Studio Flamingo (火烈鸟) 升级踩坑记录
由于想要验证Compose最新的debug特性,而我目前使用的版本(Dolphin 小海豚)不支持,查看官网说明需要最新版本,所以不得已进行了一下Android Studio版本升级,过程中遇到一些问题,本文仅做记录。&a…...
【JAVA凝气】异常篇
哈喽~大家好呀,这篇来看看JAVA异常篇。 目录 一、前言 二、Exception 异常 1、Java 的非检查性异常 2、Java 检查性异常类 三、Error 错误 四、捕获异常 五、多重捕获块 六、throws/throw 关键字 七、自定义异常类 八、图书推荐 一、前言 异常是程序中的一…...
C++中的函数模板
目录 1. 什么是函数模板? 2. 如何定义函数模板? 3. 如何使用函数模板? 4. 函数模板与函数重载的区别是什么? 5. 函数模板与类模板有何异同点? 1. 什么是函数模板? - 函数模板是一种通用的函数描述&…...
MapReduce【Shuffle-Combiner】
概述 Conbiner在MapReduce的Shuffle阶段起作用,它负责局部数据的聚合,我们可以看到,对于大数据量,如果没有Combiner,将会在磁盘上写入多个文件等待ReduceTask来拉取,但是如果有Combiner组件,我们…...
postman接口自动化测试
Postman除了前面介绍的一些功能,还有其他一些小功能在日常接口测试或许用得上。今天,我们就来盘点一下,如下所示: 1.数据驱动 想要批量执行接口用例,我们一般会将对应的接口用例放在同一个Collection中…...
历经70+场面试,我发现了大厂面试的套路都是···
今年的金三银四刚刚过去,我又想起了我在去年春招时面试了50余家,加上暑期实习面试了20余家,加起来也面试了70余场的面试场景了。 基本把国内有名的互联网公司都面了一遍,不敢说自己的面试经验很丰富,但也是不差的。 …...
可视区域兼容性问题的思考及方法封装
今日在复习可视化尺寸获取时突发奇想,为什么要在怪异模式下使用document.body.clientWidth,在标准模式下使用document.documentElement.clientWidth?以及是否在IE8及以下的版本中其中一个获取方式将返回undefined或0。 出于该问题的思考&am…...
安全工具 | CMSeeK [指纹识别]
0x00 免责声明 本文仅限于学习讨论与技术知识的分享,不得违反当地国家的法律法规。对于传播、利用文章中提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任,一旦造成后果请自行承担…...
Android新logcat使用技巧
Android新logcat使用技巧 logcat新UI出现后,我常困惑于怎么过滤log,和以前的UI差异比较大,新UI界面结构如下: 这个新的 logcat 的问题是如何过滤信息并不是很明显。 获取应用的日志信息 要获取我们当前调试应用的日志信息&…...
使用Makefile笔记总结
文章目录 一、简单了解Makefile1.1 Makefile示例1.2 基本规则1.3 make是如何工作的1.4 使用变量1.5 make自动推导 二、变量2.1 变量的定义和引用2.2 变量的两种高级用法2.3 override 和 define 关键字2.4 环境变量与目标变量2.5 自动变量 三、Makefile规则3.1 通配符3.2 目标依…...
024、NPU指令集架构(ISA)概述:从CISC到VLIW
024、NPU指令集架构(ISA)概述:从CISC到VLIW 去年冬天调试一块国产NPU芯片的卷积算子,跑ResNet-50前向推理,死活比理论算力低了一个数量级。抓了三天波形,最后发现是指令发射槽的冲突——两条MAC指令争同一个数据总线,硬件自动插入三个空泡周期。那一刻我盯着逻辑分析仪…...
【限时开源】DeepSeek-VL多模态代码重构检查清单:含19个AST级检测规则+CI/CD嵌入脚本(仅剩47份可下载)
更多请点击: https://intelliparadigm.com 第一章:DeepSeek-VL多模态代码重构的背景与价值 随着视觉语言模型(VLM)在真实工业场景中加速落地,传统单模态代码架构在处理图像-文本联合推理任务时暴露出显著瓶颈…...
DamaiHelper:大麦网演唱会抢票脚本终极指南
DamaiHelper:大麦网演唱会抢票脚本终极指南 【免费下载链接】DamaiHelper 大麦网演唱会演出抢票脚本。 项目地址: https://gitcode.com/gh_mirrors/dama/DamaiHelper 还在为抢不到心仪演唱会门票而烦恼吗?面对秒光的票源和黄牛的高价,…...
OneBlog权限系统实战:RBAC与Apache Shiro的完美结合
OneBlog权限系统实战:RBAC与Apache Shiro的完美结合 【免费下载链接】OneBlog :alien: OneBlog,一个简洁美观、功能强大并且自适应的Java博客 项目地址: https://gitcode.com/gh_mirrors/on/OneBlog OneBlog是一个简洁美观、功能强大并且自适应的…...
3个实用技巧:用SMUDebugTool解决AMD Ryzen常见硬件问题
3个实用技巧:用SMUDebugTool解决AMD Ryzen常见硬件问题 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…...
SSH协议深度解析:从加密隧道到生产级安全加固
1. 这不是“连服务器”的工具,而是现代数字信任的底层地基很多人第一次听说SSH,是在运维同事敲下ssh user192.168.1.100那刻——屏幕一闪,就进了另一台机器的命令行。于是顺理成章把它理解成“远程登录工具”。但这种认知,就像把高…...
Seraphine:英雄联盟玩家的智能游戏助手完整指南
Seraphine:英雄联盟玩家的智能游戏助手完整指南 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine Seraphine是一款基于英雄联盟官方LCU API开发的智能游戏助手,专为《英雄联盟》玩家设计…...
SLED框架:边缘计算中的LLM推理加速方案
1. SLED框架:边缘计算场景下的LLM推理加速方案在边缘计算环境中部署大语言模型(LLM)面临的核心矛盾在于:模型规模的持续增长与边缘设备有限的计算资源之间的不匹配。传统解决方案如模型量化(Quantization)和…...
深度学习结合CT图像预测岩石渗透率:从孔隙网络到升尺度计算
1. 项目概述:当深度学习遇见岩石CT图像 在油气勘探、地热开发乃至二氧化碳地质封存这些领域,我们这些从业者最头疼的问题之一,就是如何准确知道一块岩石的“透水能力”,也就是渗透率。传统上,我们依赖实验室岩心驱替实…...
Unity UI性能崩坏真相:UGUI重建机制与FGUI数据驱动协同
1. 这不是“UI怎么做”,而是“为什么UI总在上线前崩掉”我带过七支Unity项目团队,从百人MMO到独立游戏Demo,几乎每支队伍都经历过同一个深夜:美术交了新皮肤,策划改了按钮文案,程序顺手调了个CanvasScaler的…...
