当前位置: 首页 > 知识库问答 >
问题:

为什么Java飞行记录器采样太少?

邹俊友
2023-03-14

我们有一个性能很差的应用程序,因此我们使用飞行记录器的方法分析,看看时间都花在哪里了。它基本上起作用了,但一分钟的记录所采集的样本数远低于100个。(使用“分析”预设)

我使用了一个简单的示例应用程序(对随机数求和)进行比较,它产生了大约6000个样本一分钟或记录--这在我看来是正确的。

共有1个答案

常宸
2023-03-14

Java飞行记录器的采样方法是非常具体的。有两种类型的方法样本

  • “方法分析示例”-仅当线程正在执行Java代码(应用程序代码,而不是JNI,不是JVM的一部分)时才获取示例
  • “Method Profiling Sample Native”-仅当线程在JNI调用中时才获取示例

这些相同的是单独的,只有前者是由任务控制可视化的。在这两种类型的示例中都省略了以下执行状态。

    null
  • 谎言、假谎言和采样偏置
  • 使用JDK飞行记录器搜索代码热点
 类似资料:
  • 我在启动时通过为测试中的Java程序指定以下CLI选项来启动JFR: 测试执行需要90秒才能完成。 在Java Mission Control中打开JFR转储后,JMC中的Call Tree选项卡如下所示: 每秒不到1个样本。这使得详细钻取、热方法和概述选项卡实际上无用。经过初步调查,确定方法采样设置为默认值10ms,而事实证明,这个意外的结果是因为90秒中有98%的时间是在执行各种不同的数据库读

  • 我试图使Java Flight Recorder能够在使用Neo4j桌面运行Cypher查询时每10秒收集一次线程转储。但在Neo4j桌面的“设置”选项卡(配置文件)中,建议的飞行记录器选项无法识别,并在启动过程中引发错误。 我正在使用Oracle JDK 11。 这些是我在文件中输入的命令- 当我启动DB时,这些会引发一个错误- 通过在另一个简单的程序上测试,我已经验证了飞行记录器在我的机器上工

  • 问题内容: 我正在尝试使用JAVA解析JFR转储。我关注了这个博客,http://hirt.se/blog/?p=446。但是现在不推荐使用这些方法。JFR到JAVA是否有任何受支持的解析器?如果不能,您能否指出我是否可以从JFR转储中检索数据? 问题答案: 正如Klara提到的那样,没有官方支持的解析器。希望JDK 9将正式支持JFR解析器。现在,您可以使用Hirt博客中提到的API 。不用担心

  • 今天我看了一下Java7Update45中引入的任务控制,并用飞行记录器进行了一些测试。一切似乎都在按预期工作,我从我测试的应用程序中获得了大量关于线程、内存和任何东西的数据。只有一件事对我来说似乎很奇怪:在“General”类别中没有显示CPU使用情况,在CPU使用情况图标下面只有一个句子“no Events In Recording”。当我不使用飞行记录而是使用JMX控制台时,CPU使用情况显

  • M Java应用程序可能存在文件描述符泄漏,因为我得到了异常。 我使用JFR运行应用程序,当我检查文件I/O时,几乎看不到任何I/O计数。是否可以使用JFR查找打开文件但不关闭文件的代码?