当前位置: 首页 > 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,可以与其他工…...

终极Goyo.vim配置指南:打造完美无干扰写作环境的10个技巧

终极Goyo.vim配置指南:打造完美无干扰写作环境的10个技巧 【免费下载链接】goyo.vim :tulip: Distraction-free writing in Vim 项目地址: https://gitcode.com/gh_mirrors/go/goyo.vim Goyo.vim是一款专为Vim用户设计的无干扰写作插件,它能帮助你…...

如何高效管理多平台网盘文件:LinkSwift直链获取工具深度解析

如何高效管理多平台网盘文件:LinkSwift直链获取工具深度解析 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 …...

高效下载huggingface模型权重的4种实用方法

1. 使用国内镜像站加速下载 遇到Hugging Face模型下载慢的问题,我最先尝试的解决方案就是切换镜像站。国内有几个稳定的镜像源,实测下载速度能提升5-10倍。这里分享我最常用的hf-mirror.com镜像站使用技巧。 首先需要安装官方工具包: pip ins…...

华硕笔记本散热难题:3步用G-Helper解决风扇失控与性能调优

华硕笔记本散热难题:3步用G-Helper解决风扇失控与性能调优 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix…...

Stable Diffusion 3.5 FP8镜像部署避坑指南:常见问题一网打尽

Stable Diffusion 3.5 FP8镜像部署避坑指南:常见问题一网打尽 1. 镜像简介与核心优势 Stable Diffusion 3.5 FP8镜像基于官方SD3.5模型优化,通过FP8量化技术实现了显著性能提升。相比标准版本,这个镜像具有三大核心优势: 显存占…...

手把手教你用ESP32-S3+Ollama打造本地AI语音助手:从Django服务到硬件播放

从零构建基于ESP32-S3的本地AI语音助手:OllamaDjango全链路实战 在智能硬件开发领域,语音交互系统正经历着从云端依赖到本地化部署的范式转移。本文将完整呈现如何利用ESP32-S3微控制器与Ollama大语言模型,构建一个完全运行在内网环境的AI语音…...

像素幻梦惊艳案例:FLUX.1-dev生成符合PICO-8硬件限制的像素程序截图

像素幻梦惊艳案例:FLUX.1-dev生成符合PICO-8硬件限制的像素程序截图 1. 像素艺术的新纪元 在复古游戏复兴的浪潮中,像素艺术正迎来它的第二次黄金时代。而FLUX.1-dev模型的出现,为这种经典艺术形式注入了全新的活力。今天我们要展示的&…...

SEO 搜索推广需要哪些技能和工具

SEO 搜索推广需要哪些技能和工具 在当今数字化时代,搜索引擎优化(SEO)搜索推广已经成为网站流量增长和品牌推广的关键。如果你是一个希望提升网站在搜索引擎中排名的人,了解SEO搜索推广需要哪些技能和工具是至关重要的。本文将从…...

实测Nanbeige 4.1-3B WebUI:浅灰蓝波点背景+呼吸阴影效果惊艳

实测Nanbeige 4.1-3B WebUI:浅灰蓝波点背景呼吸阴影效果惊艳 1. 极简美学与功能设计的完美融合 第一次打开这个WebUI时,最直观的感受就是它完全颠覆了我对本地大模型界面的刻板印象。传统的部署方案往往只关注功能实现,界面设计几乎都是千篇…...

WPF开源Office控件库全解析,利用css的动画效果制作轮播图。

WPF 开源 Office 风格控件库的技术解析 开源 Office 风格控件库的核心特性 Office 风格用户界面控件库为 WPF 开发者提供了一套高度可定制的 UI 组件,模仿 Microsoft Office(如 Ribbon、Fluent Design)的现代化设计。这类库通常包含以下核心组…...