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 目标依…...
AI大揭秘:从ChatGPT到深度学习,普通人如何抓住AI风口?
一提及AI,大家脑海里想的是什么呢?是Deepseek、豆包、元宝等软件应用,还是能跑会跳的机器人?或者是那些能自己跑的车子、能自己运转的机器? 这些都是AI,都是人工智能。 基本概念 AI是英文Artificial Intell…...
基于SpringBoot + Vue的人工智能时代个人计算机的安全防护科普系统
文章目录前言一、详细操作演示视频二、具体实现截图三、技术栈1.前端-Vue.js2.后端-SpringBoot3.数据库-MySQL4.系统架构-B/S四、系统测试1.系统测试概述2.系统功能测试3.系统测试结论五、项目代码参考六、数据库代码参考七、项目论文示例结语前言 💛博主介绍&#…...
【互联网大厂Java面试】核心技术栈面试问答实战解析
互联网大厂Java求职面试实战问答 本文以互联网大厂Java求职者面试为场景,围绕核心技术栈,采用故事化形式,严肃的面试官与搞笑的水货程序员谢飞机进行问答。文章分3轮,每轮包含3-5个问题,问题循序渐进,旨在…...
32-字体反爬
本文需要借助工具:fontcreator,或者在线网站:字体设计在线网站 字体反爬介绍 字体反爬是网站常用的前端反爬手段,核心逻辑是用自定义字体文件替代明文文本,爬虫自动化也无法拿到正确的明文数据 字体反爬原理 本文主…...
无障碍技术实践:OpenClaw+Phi-3-vision-128k-instruct为视障用户描述图片
无障碍技术实践:OpenClawPhi-3-vision-128k-instruct为视障用户描述图片 1. 项目背景与动机 去年冬天的一次地铁站经历让我萌生了这个想法。当时我看到一位视障朋友在站台反复用盲杖试探前方障碍物,而墙上明明贴着"施工绕行"的警示海报。这个…...
AD09实战:3分钟搞定BOM表导出与自动化分类(附模板下载)
AD09实战:3分钟高效生成智能分类BOM表的完整指南 在电子设计领域,BOM表(物料清单)是连接设计与生产的核心纽带。传统手工整理BOM表不仅耗时费力,还容易因人为疏忽导致元器件分类错误、数量统计偏差等问题。AD09作为业界…...
LeetCode--344.反转字符串(字符串/双指针法)
344.反转字符串 题目描述 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须**原地修改输入数组**、使用 O(1) 的额外空间解决这一问题。 示例 1: 输入&#x…...
高效系统维护:解决Windows性能问题的Dism++全面指南
高效系统维护:解决Windows性能问题的Dism全面指南 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language Dism是一款功能强大的Windows系统维护工具&#x…...
RAG 不需要向量库?无向量检索新范式全攻略(非常硬核),大模型检索从入门到精通,收藏这一篇就够了!
基于推理的检索如何击败结构化文档上的相似性搜索,以及如何使用 PageIndex 构建它 你向 AI 智能体询问一份 200 页合同的问题。它自信地回答。答案是错误的。它从正确的主题中提取了文本,但却是错误的条款,而模型从未注意到。 这不是模型问…...
TypeC接口改造全攻略:从MicroUSB到TypeC的电路设计与PCB制作(含免费设计文件)
Type-C接口改造全攻略:从MicroUSB到Type-C的电路设计与PCB制作 最近整理工作室时翻出一堆老设备,清一色配备MicroUSB接口。看着手边越来越多的Type-C线材,突然意识到是时候给这些"老伙计"升级接口了。作为硬件开发者,我…...
