问题标签 [jfr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
111 浏览

java - 如何在java程序中给出命令行选项?

我想在运行我的 java 程序时使用 Java 飞行记录器。我可以在 java 程序本身而不是在运行应用程序时传递参数吗?

例如:我有一个 java 类说“HelloWorld.class”我想在运行时使用 java 飞行记录器,我可以用它来实现

java -XX:+UnlockCommercialFeatures -XX:+FlightRecorder HelloWorld

但我想实现这个解锁商业功能并从我的java代码启动飞行记录器。可能吗?

0 投票
1 回答
995 浏览

java - 如何在 Java Flight Recorder 采样中包含 IO 绑定方法?

我在启动时通过为被测 Java 程序指定以下 CLI 选项来启动 JFR:

测试执行需要 90 秒才能完成。

在 Java Mission Control 中打开 JFR 转储后,JMC 中的 Call Tree 选项卡如下所示:

在此处输入图像描述

每秒少于 1 个样本。这使得细节钻取、热门方法和概述选项卡实际上毫无用处。经过初步调查,确定方法采样设置为默认值 10 毫秒,事实证明,这个意外结果是因为在执行各种不同的数据库读取时,大约 98% 的 90 秒用于等待套接字 I/O ,所以我只在另外 2% 的时间里获取方法样本。

如何在方法时间中包含 I/O 绑定样本,以帮助定位花费最多时间等待数据库结果的跟踪?该过程包含多个地方的数据库查询,这些查询又从多个其他地方调用,因此猜测慢速调用路径并不容易。

0 投票
1 回答
557 浏览

java - 在 Neo4j Desktop 中启用 Java Flight Recorder

我正在尝试启用 Java Flight Recorder 以在使用 Neo4j Desktop 运行 Cypher 查询时每 10 秒收集一次线程转储。但是在 Neo4j 桌面的“设置”选项卡(配置文件)中,推荐的飞行记录器选项无法识别并在启动过程中抛出错误。

我正在使用 Oracle JDK 11。

这些是我在文件中输入的命令 -

当我启动数据库时,这些会引发错误 -

通过在另一个简单程序上进行测试,我已经验证了 Flight Recorder 确实可以在我的机器上运行 -

此命令工作正常并成功生成记录。

还有其他方法可以在配置文件中启用飞行记录器设置吗?

0 投票
2 回答
199 浏览

java-11 - 如何在多个线程上追逐 JFR 事件

我正在努力使用自定义 JFR 事件对异步 servlet 请求处理进行建模。我面临的挑战是,在异步处理中,一个请求可能会被#dispatch()编辑多次。这意味着整个请求处理链可能会被执行多次,有时会在不同的线程中执行。如何使用自定义 JFR 事件对此进行建模?

对我有帮助的是“父”事件的概念(可能在不同的线程中)或事件的暂停和恢复。

编辑

稍微说明一下这个问题。处理异步请求可能需要 100 秒的挂钟时间。然而,在一个方法中,实际处理可能仅在 4 秒的用户时间内发生Servlet#service()

  • 线程A中的第二个0-1,Servlet#service()方法返回,AsyncContext开始
  • 线程 B 中的第二个 10-11,Servlet#service()方法返回,AsyncContext开始
  • 线程 A 中的第二个 80-81,Servlet#service()方法返回,AsyncContext开始
  • 线程 C 中的第二个 99-100,Servlet#service()方法返回

我只对在这三个线程中为这四个持续时间生成事件感兴趣,然后将它们与单个请求相关联。

0 投票
1 回答
117 浏览

java - 如何清理 Java 飞行记录

我有一个想要分享的 Java 飞行记录。不幸的是,Java 飞行记录在系统属性和环境变量中包含用户名和密码(JMC 正确地警告了这一点)。有没有办法从 Java 飞行记录中删除所有系统属性和环境变量,以便我可以共享它?

0 投票
2 回答
412 浏览

trace - JFR.dump 失败。“在指定的时间间隔内没有数据”

执行时收到以下错误消息jcmd 115 JFR.dump name=continuous_recording

我使用以下配置开始录制:

可能是缓冲区尚未填充最小块大小。但是 JFR.check 命令不提供该信息。

更新:

如果我在不指定记录名称的情况下运行 JFR.dump,我可以从 Java 应用程序获取转储。我尝试用引号(转义和未转义)封装录音名称,并得到与以前相同的错误。

0 投票
1 回答
430 浏览

java - GenCollectForAllocation 是什么意思?

在阅读 JFR 转储时,我想出了一个称为 VM 操作的GenCollectForAllocation方法,它比其他进程花费更多时间。谁能给我解释一下这个操作是什么?

Java 任务控制快照

0 投票
2 回答
884 浏览

java - 命令行中的 Java Flight Recorder (JFR):[jfr] [ERROR] [1014.291] 关闭时无法删除存储库

我正在学习 Java Flight Recorder 用法java-flight-recorder-monitoring 的课程。

我从示例编译了一个java代码(添加class并且imports因为它没有编译它们):

然后我按照课程运行:

C:\Program Files\Java\jdk1.8.0_191\bin>java -XX:+UnlockCommercialFeatures -XX:+F lightRecorder -XX:StartFlightRecording=duration=200s,filename=c:\am\out\flight.j fr - cp c:\am\out TestFlightRecorder

之后立即输出:

开始录制 1. 结果将写入:

C:\AM\out\flight.jfr

java的Windows任务管理器中的内存使用量上升,然后超过200秒:

线程“主”java.lang.OutOfMemoryError 中的异常:TestFlightRecorder.main(TestFlightRecorder.java:12) 处的 Java 堆空间 [jfr][ERROR][1014.291] 关闭时无法删除存储库

结果flight.jfr大小为 0 字节。(当我使用简单的 hello world java 类发出相同的命令时,flight.jfr 的创建大小为 125Kb,其中包含“空”信息——我猜这是因为应用程序运行得如此之快,飞行记录尚未开始——而这问题不在于那种空虚)。

对此类错误的网络搜索没有结果。为什么出错,我做错了什么来录制?

0 投票
1 回答
495 浏览

java - 为什么我有多个 JFR 录音?

掌握 Java Flight Recorder (JFR) 配置后,我有一个最合理的配置:

然而,使用JFR.check表明我没有一个,而是两个正在进行的录音。

录音0是怎么发生的?

0 投票
0 回答
153 浏览

sonarqube - 运行 npm run sonar 时出现问题

我正在使用声纳分析 nodejs 代码,但是当我运行 npm run sonar 时出现此错误

当我用我的根用户运行命令时它工作正常。可能是什么原因?