小编Kir*_*lin的帖子

Java Mission Control堆配置文件

我正在使用Java 7u40 附带的 Java Mission Control Profiler,我无法进行配置文件分配和收集对象统计信息.无论我做什么,我都无法在Memory - > Object Statistics窗口中看到任何统计信息.

以下命令启动集合:

jcmd <pid> JFR.start duration=60s settings=profile filename=alloc-prof.jfr
Run Code Online (Sandbox Code Playgroud)

Java的Mission Control文档中没有提到任何具体的选项,以使物体轮廓.我试图创建自己的个人资料并设置:

  <flag name="heap-statistics-enabled" label="Heap Statistics">true</flag>
  <flag name="allocation-profiling-enabled" label="Allocation Profiling">true</flag>
Run Code Online (Sandbox Code Playgroud)

但仍然没有收集对象统计信息.

java heap garbage-collection jmc jfr

9
推荐指数
1
解决办法
9419
查看次数

JCMD的代码/内部部分包含什么?

为基于JVM的服务确定docker容器的尺寸非常困难(众所周知)。我很确定我们的容器尺寸略有不足,并且想清除一些与我在监视时看到的特定jcmd(本机内存跟踪器)输出有关的问题。

问题:

JCMD输出在这里。

直接字节缓冲区 JMX属性在这里。

一些背景细节:

设置:

  • 基于Spring Boot的应用程序
  • JVM选项:

    -服务器-Xms1792m -Xmx1792m -XX:MetaspaceSize = 128M-XX:MaxMetaspaceSize = 192M -XX:+ UseG1GC -XX:+ UseStringDeduplication-XX:MaxDirectMemorySize = 256m -XX:NativeMemoryTracking = detail

  • 在AWS / EC2中运行的Docker容器2500MiB

java linux jvm memory-management jcmd

8
推荐指数
1
解决办法
410
查看次数

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

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

-Xmx24g -XX:+UnlockCommercialFeatures -XX:+FlightRecorder 
-XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,settings=profile
Run Code Online (Sandbox Code Playgroud)

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

在 Java Mission Control 中打开 JFR 转储后,JMC 中的“调用树”选项卡如下所示:

在此输入图像描述

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

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

java performance profiling java-mission-control jfr

5
推荐指数
1
解决办法
1285
查看次数

如何使用Java Flight Recorder避免截断的堆栈跟踪

我正在使用Oracle Java Flight Recorder来收集Java应用程序的堆栈跟踪示例.这些堆栈跟踪允许我最终生成CPU Flamegraph.

我的问题是Java Flight Recorder会截断超过64帧的堆栈跟踪.在Flamegraph中很容易观察到并且使用调试器我可以观察到没有FLRStackTrace超过64 FLRFrame秒且几乎所有64帧的堆栈跟踪都将其TruncationState设置为TRUNCATED.

有谁知道这64帧限制是否可以增加?如果堆栈跟踪不完整,则Flamegraphs无用.

java jvm jmc flamegraph jfr

3
推荐指数
1
解决办法
367
查看次数

jcmd - 命令 ManagementAgent.start 的用途是什么?

在使用jcmd监控java进程时,有一个命令ManagementAgent.start

检查man page/oracle文档/google,没有找到任何描述。

问题是:

  • 它是干什么用的?

java jvm jcmd

3
推荐指数
1
解决办法
2569
查看次数

如何读取JFR文件?

我是一个启用了 JFR 的 java 应用程序,它生成了附加文件,我不熟悉使用 JFR 罐头,所以我需要帮助读取该文件。我需要帮助阅读该文件。应用程序何时启动和停止、使用了多少内存、橙色和粉色条表示什么?

下午 1:28:00 之后没有数据。这意味着什么?

在此输入图像描述

memory-leaks memory-management jmc jfr

3
推荐指数
1
解决办法
2万
查看次数

为什么我有不止一个 JFR 录音?

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

-XX:+UnlockCommercialFeatures -XX:+DebugNonSafepoints -XX:+FlightRecorder 
-XX:FlightRecorderOptions=defaultrecording=true,dumponexit=true,dumponexitpath=../logs 
-XX:StartFlightRecording=compress=true,maxsize=1g
Run Code Online (Sandbox Code Playgroud)

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

Recording: recording=0 name="HotSpot default" (running)

Recording: recording=1 name="Recording 1" maxsize=1.0GB (running)
Run Code Online (Sandbox Code Playgroud)

录音0是怎么发生的?

java jfr

2
推荐指数
1
解决办法
414
查看次数