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 目标依…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

【深度学习新浪潮】什么是credit assignment problem?
Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...