当前位置: 首页 > news >正文

Start JDKFlightRecorder--人工翻译

可以同时运行多个JFR记录,并且每个JFR记录都可以使用不同的配置,你可以使用不同的JFR记录去捕获不同的事件集。但是,为了使JFR内部逻辑更加精简,生成的记录始终包含当时活动的所有记录的所有事件的并集。这意味着,运行多个JFR记录,得到的记录信息会多余实际所需的信息。

通过集成到JMC里的Flight Recorder插件来使用JFR是最简单直观的。该插件允许通过直观的GUI使用JFR的功能。有关通过JMC来使用JFR的一些详细说明,请查看JMC官方文档的Flight Recorder插件部分

本文介绍允许和管理JFR记录更高级的用法:

  • 使用命令行
  • 使用诊断命令
  • 配置JFR记录
  • 自动创建JFR记录
  • 安全
  • 故障排除

使用命令行 Command Line

在程序启动时,你可以在命令行通过java的-XX:StartFlightRecording选项,来开始并配置一个JFR记录,然后声明-XX:+FlightRecorder选项来启用JFR,因为JFR是一个商业特性,因此还需要声明-XX:+UnlockCommercialFeatures选项

下面这个例子就说明了如何运行MyApp并且同时开启一个60秒的JFR记录,该记录将保存到一个名为myrecording.jfr的文件

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:StartFlightRecording=duration=60s,filename=myrecording.jfr MyApp

使用诊断命令Diagnostic Command

执行诊断命令最简单的方法是使用jcmd工具(位于java安装目录中)。要发出命令,必须将JVM进程号(或主类的名称)和实际的命令作为参数传递给jcmd。

例如在pid为5368的正在运行的java进程上开启一个60秒的JFR记录,并将其保存到当前目录下命名为myrecording.jfr的文件中

jcmd 5368 JFR.start duration=60s filename=myrecording.jfr

查看所有正在运行的Java进程列表,使用jcmd命令并且不加任何参数。查看对于一个正在运行的Java程序可以使用的所有命令,将help作为pid(或者主类名称)之后的诊断命令。

与JFR相关的命令包括:

  • JFR.start 开始记录
  • JFR.check 检查指定进程的所有运行中的JFR记录的运行情况,包括JFR记录id,文件名,持续时间等
  • JFR.stop 停止指定id的JFR记录(默认情况下停止id为1的记录)
  • JFR.dump 转存指定id的JFR记录,时间为到目前为止收集的数据(默认情况下转储id为1的记录的数据)

配置JFR记录

您可以通过许多其他方式配置JFR记录。无论您如何启动JFR记录(使用命令行或者诊断命令),他们的工作方式都是相同的。

设置大小和寿命

maxsize=size
附加单位为k或K,m或M,g或G,或者不指定单位,默认为1byte字节
maxage=age
附加单位为s秒,或m分,或h小时,或d天数

如果同时设定了大小和寿命限制,则在先达到其中一个限制时将删除数据

设置延迟

在安排JFR记录时,你可能想要在实际开始前添加一个延迟。例如,当从命令行运行时,您可能希望应用程序在开始录制之前启动或达到稳定状态。要实现这一点,请使用delay参数:

delay=delay
附加单位为s秒,或m分,或h小时,或d天数

设置压缩

尽管录制文件格式非常紧凑,但您仍然可以通过将其添加到ZIP存档中进一步压缩。要启用压缩,请使用以下参数:

compress=true

请注意,压缩需要CPU资源,这会对性能产生负面影响。

自动创建JFR记录

当使用默认记录运行时,您可以配置JFR,以便在出现某些指定情况时自动将当前内存中的记录数据保存到文件中。如果还使用了磁盘存储库,则还将包括磁盘存储库中的当前信息。

退出时创建录音

要在每次JVM退出时将记录数据保存到指定路径,请使用以下选项启动应用程序:

-XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,dumponexitpath=path

设置应该保存记录的路径。如果指定目录,则在该目录中创建一个以日期和时间作为名称的文件。如果指定文件名,则使用该名称。如果不指定路径,JFR记录文件将保存在当前目录中。

使用触发器创建录音
您可以使用JMC的控制台来设置触发器。触发器是一种规则,只要规则指定的条件为真,它就会执行操作。

例如,您可以创建一个规则,在堆大小超过100 MB时触发JFR记录。JMC中的触发器可以使用通过JMX MBean公开的任何属性作为规则的输入。
在JMX控制台的触发器选项卡定义触发器,有关如何创建触发器的详细信息,请参阅JMC官方文档

安全

JFR仅用于诊断的目的,JFR记录文件可能包含机密信息,如Java命令行选项和环境变量。在存储或传输JFR记录文件时要像诊断核心文件或堆数据转存一样小心。

使用JFR的各种方法的安全权限

Method方法Security安全
Command line命令行每一个可以访问Java程序命令行的人都必须是可信任的
Diagnostic commands诊断命令只有Java进程的所有者可以使用jcmd来控制该进程。
JMC客户端JMC客户端使用JMX访问JVM。

故障排除

通过使用以下选项之一启动JVM,可以从Java Flight Recorder收集大量诊断信息:

  • -XX:FlightRecorderOptions=loglevel=debug
  • -XX:FlightRecorderOptions=loglevel=trace

附:JFR命令参考

Command-Line Options 命令行选项
当您使用java命令行启动你的Java应用程序,您可以指定选项以启用JFR、配置其设置以及开始JFR记录。以下命令行选项特定于Java Flight Recorder:

  • -XX:+|-FlightRecorder
  • -XX:FlightRecorderOptions
  • -XX:StartFlightRecording

这些命令行选项仅在JDK的商业许可证中可用。要使用它们,还必须指定-XX:+UnlockCommercialFeatures选项。

注:使用 -XX 选项的前提是您对系统有透彻的了解,如果这些命令使用不当,可能会影响系统的稳定性或性能。
-XX 选项是试验性的,随时可能更改。

Diagnostic Command Reference 诊断命令参考
这是对可用于控制JFR的诊断命令和每个命令可用参数的描述。也可通过运行 jcmd 命令和指定的进程标识符,后跟 help参数和命令名获取帮助信息。例如,若要获取 JFR.start命令的帮助信息,请运行以下命令:

jcmd 5361 help JFR.start

要获取JVM可用的诊断命令的完整列表,不指定命令名即可,即jcmd 5461 help
与JFR相关的诊断命令包括:

  • JFR.start
  • JFR.check
  • JFR.stop
  • JFR.dump

JFR.start 开启

参数说明类型默认
nameJFR记录名称String
settings服务器端模板String
defaultrecording开始默认录制BooleanFalse
delay延迟开始记录Time0s
duration记录持续时间Time0s(表示“永远”)
filename生成的记录文件名String
compressGZip压缩生成的记录文件BooleanFalse
maxage缓冲区数据的最长期限Time时间0s(表示“无年龄限制”)
maxsize缓冲区的最大大小(字节)Long长0(表示“无最大大小”)

JFR.check 检查

参数说明类型默认
name记录名称String
recording记录IDLong1
verbose打印详细数据BooleanFalse

JFR.stop 停止

参数说明类型默认
name记录名称String
recording记录IDLong1
discard丢弃记录数据Boolean
copy_to_file将记录数据复制到文件String
compress_copyGZip压缩“复制到文件”的目标BooleanFalse

JFR.dump 转存

参数说明类型默认
name记录名称String
recording记录IDLong1
copy_to_file将记录数据复制到文件String
compress_copyGZip压缩“复制到文件”目标BooleanFalse

相关文章:

Start JDKFlightRecorder--人工翻译

可以同时运行多个JFR记录,并且每个JFR记录都可以使用不同的配置,你可以使用不同的JFR记录去捕获不同的事件集。但是,为了使JFR内部逻辑更加精简,生成的记录始终包含当时活动的所有记录的所有事件的并集。这意味着,运行…...

Python3安装pyhanlp最佳解决方法

1、Hanlp介绍 Hanlp是一款中文自然语言处理工具。Hanlp支持多种自然语言处理任务,包括分词、词性标注、命名实体识别、依存句法分析、情感分析、文本分类等。其主要优点包括: 高准确率:Hanlp采用了基于神经网络的分词方法,有效提…...

漏洞管理基础知识

漏洞管理对于端点安全至关重要,是在安全漏洞导致漏洞之前清除安全漏洞的最主动方法之一。 什么是漏洞 漏洞是软件中的错误代码段,会导致软件崩溃或以程序员从未预料到的方式做出响应。黑客可以利用漏洞对计算机系统进行未经授权的访问或对计算机系统执行…...

WBS项目分解的7大基本原则

制定和分解WBS,需要遵循的基本原则: 1、唯一性 每一项工作任务在WBS中是唯一的。 WBS项目分解的7大基本原则 2、负责制 每一项任务都需要明确责任人,一人负责,其他人参与。 3、可测量性 每一项任务都应该是可以量化和测量的&#…...

PoseiSwap IDO在Bounce上启动在即,如何参与?

目前,Nautilus Chain 生态基本完成测试,并即将在不久上线主网。PoseiSwap 作为 Nautilus Chain 上的首个 DEX,也即将面向市场并上线正式版本。我们看到, PoseiSwap 也正式发布了新的市场进程,基于其治理代币 POSE 的 I…...

Linux基本指令介绍

目录 前言 指令操作与图形化界面的对比 adduser passwd whoami ls指令 pwd指令 cd指令 touch指令 mkdir指令 rmdir指令 && rm 指令 man指令 cp指令 mv指令 cat(显示文件内容(全部),且不可修改的)…...

C++服务器框架开发1——项目介绍/分布式/#ifndef与#pragma once

该专栏记录了在学习一个开发项目的过程中遇到的疑惑和问题。 其教学视频见:[C高级教程]从零开始开发服务器框架(sylar) C服务器开发1——项目介绍/分布式/#ifndef与#pragma once 项目介绍分布式#ifndef与#pragma once 最近开始学习下C的项目开发,找了很多…...

Tensorflow2基础代码实战系列之双层RNN文本分类任务

深度学习框架Tensorflow2系列 注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark …...

Python爬虫-快手photoId

前言 本文是该专栏的第49篇,后面会持续分享python爬虫干货知识,记得关注。 笔者在本专栏的上一篇,有详细介绍平台视频播放量的爬取方法。与该平台相关联的文章,笔者已整理在下方,感兴趣的同学可查看翻阅。 1. Python如何解决“快手滑块验证码”(4) 2. 快手pcursor 3. …...

软件测试人员如何为项目的质量保障兜底?看完你就明白了...

上线前层层保障 01文档管理 关键词:需求文档、设计文档、测试文档 1.需求和设计产出方为产品、开发,测试需要做好流程监督,这里重点说下测试文档。 2.测试文档,从业务领域来说,一般有测试计划、测试用例、业务总结文…...

《幸福关系的7段旅程》

关于作者 本书作者安德鲁∙马歇尔,英国顶尖婚姻咨询机构RELATE的资深专家,拥有 30年丰富的咨询经验,并为《泰晤士报》《观察家》和《星期日快报》撰写专栏文章。已出版19部作品,并被翻译成20种语言。 关于本书 《幸福关系的7段…...

使用Python中PDB模块中的命令来调试Python代码的教程

这篇文章主要介绍了使用Python中PDB模块中的命令来调试Python代码的教程,包括设置断点来修改代码等、对于Python团队项目工作有一定帮助,需要的朋友可以参考下 你有多少次陷入不得不更改别人代码的境地?如果你是一个开发团队的一员,那么你遇…...

Codeforces Round 764 (Div. 3)

比赛链接 Codeforces Round 764 A. Plus One on the SubsetB. Make APC. Division by Two and PermutationD. Palindromes ColoringE. Masha-forgetful A. Plus One on the Subset Example input 3 6 3 4 2 4 1 2 3 1000 1002 998 2 12 11output 3 4 1题意: 你可…...

四月,收割12家offer,面试也太容易了吧....

前言 下面是我根据工作这几年来的面试经验,加上之前收集的资料,整理出来350道软件测试工程师 常考的面试题。字节跳动、阿里、腾讯、百度、快手、美团等大厂常考的面试题,在文章里面都有 提到。 虽然这篇文章很长,但是绝对值得你…...

Xubuntu22.04之自动调节亮度护眼redshift(一百七十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...

Spark基础学习笔记----RDD检查点与共享变量

零、本讲学习目标 了解RDD容错机制理解RDD检查点机制的特点与用处理解共享变量的类别、特点与使用 一、RDD容错机制 当Spark集群中的某一个节点由于宕机导致数据丢失,则可以通过Spark中的RDD进行容错恢复已经丢失的数据。RDD提供了两种故障恢复的方式&#xff0c…...

ES6(对象,数组,类型化数组)

对象 1,Object.is 用于判断两个值是否相等, 其内部实现类SameValue算法, 其行为类似于“” 但与“”不同的是 它认为两个NaN是相等的 而0,-0是不相等的 2,Object.assign 表示此方法可以将对象合并成一个 他的第一个…...

JVM系列-第12章-垃圾回收器

垃圾回收器 GC 分类与性能指标 垃圾回收器概述 垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。 由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。 从不同角度分析垃圾收集器,…...

零操作难度,轻松进行应用测试,App专项测试之Monkey测试完全指南!

目录 前言: 一、 Monkey测试的基础参数 1.1 事件类型参数: 1.2 覆盖包 1.3 事件数量 二、 Monkey测试的高级参数 2.1 稳定性级别 2.2 策略参数 2.3 包含选项参数 三、 附加代码 四、 总结 前言: 在移动应用的开发过程中&#xff0…...

Linux安装Docker(这应该是你看过的最简洁的安装教程)

Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个可移植的容器,以便在不同的环境中运行。Docker的核心是Docker引擎,它可以自动化应用程序的部署、扩展和管理,同时还提供了一个开放的API,可以与其他工…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

NPOI操作EXCEL文件 ——CAD C# 二次开发

缺点:dll.版本容易加载错误。CAD加载插件时&#xff0c;没有加载所有类库。插件运行过程中用到某个类库&#xff0c;会从CAD的安装目录找&#xff0c;找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库&#xff0c;就用插件程序加载进…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...