Java飞行记录器 是一个 Java 虚拟机 (JVM) 分析器,它收集性能指标,而不会对资源造成很大的负载。分析器旨在持续保持开启状态——即使在生产系统中——以便即使虚拟机崩溃也将存在可检查的事件历史记录。

Java飞行记录器 和 JVM 优化

java任务控制和 Java飞行记录器 的最初目标是帮助开发和优化 JRockit JVM。开发人员可以使用收集的指标来更好地理解以下内容:

JVM 在运行时的行为方式;

JVM 在各种负载下如何分配资源;

处理字节码时的瓶颈;

如何以及何时执行即时编译。

虽然 Java飞行记录器 的最初目的是提供对底层 JVM 运行方式的深入了解,但很快就发现这些指标对于有兴趣检查应用程序性能的软件开发人员也非常有价值。Java飞行记录器 提供有关 Java 应用程序如何使用运行时资源的见解。

Java飞行记录器 优化

许多应用程序分析工具的一个缺点是它们会降低运行时性能。Java飞行记录器 旨在减轻这种担忧。开发人员可以让它在后台连续运行,即使在生产系统上也是如此。

它减少运行时负载的一种方法是在 JVM 内部运行。大多数 JDK 分析工具都需要开发人员在 JVM 上安装其他组件,然后将指标报告给外部数据收集工具。JVM 和外部监控工具之间的这种“闲聊”会影响性能。

Java飞行记录器 通过将已由 JVM 维护的数据制成表格,而不是实现跟踪性能的新机制,进一步最大限度地减少了对性能的损害。

例如,每个 JVM 都会跟踪内存使用情况、活动线程、堆大小和垃圾收集例程,作为其正常持续运行时的一部分。Java飞行记录器 利用这些已计算的指标并记录它们。

仪器与采样

Java飞行记录器 还通过在整个应用程序生命周期中采样数据来最小化其运行时负载。它不会捕获线程块或对象创建的每一次出现。相反,Java飞行记录器以不规则的时间间隔随机记录指标。

虽然它可能会遗漏个别事件,但 Java飞行记录器 会随着时间的推移获取足够的信息来准确描绘 JVM 的执行情况。

在故障排除方面,一段时间内的应用程序行为通常比单个事件更有意义。更重要的是,采样比低级仪器更有效。默认的 Java飞行记录器 配置对系统资源的性能影响不到 1%,而广泛的分析不太可能超过 2%。

Java飞行记录器 指标

开发人员可以使用以下部分或全部 Java飞行记录器 指标来监控应用程序并解决问题:线程活动、对象分配、实例锁、文件和套接字 I/O、异常计数、垃圾收集时间、代码缓存和编译、TLAB 分配、G1 堆布局、虚拟机操、内存消耗、活动对象数、持续的应用程序分析。

Java飞行记录器 的作用类似于飞机的黑匣子,它旨在始终开启并记录导致事件的事件。例如,启用连续分析后,当 JVM 崩溃时,Java飞行记录器 会将它保存在内存中的所有数据写入本地文件系统。此功能允许开发人员和 DevOps 团队在失败之前检查各种执行模式。

如何启动 Java飞行记录器

除了连续记录模式外,开发人员还可以显式启动 Java飞行记录器,让它运行预定的时间,然后检查记录。开发人员还可以在 java任务控制中启用触发器。例如,监控 CPU 使用或内存消耗的 MBean 如果超过 80% 的利用率阈值,可能会触发 Java飞行记录器 启动。

Java 14 版本引入了流式传输 Java飞行记录器 指标以进行实时分析的能力。此外,JDK 可以同时运行多个 Java飞行记录器 活动,这让开发人员可以同时运行各种记录选项。

Java飞行记录器 和 Java 任务控制

Java飞行记录器 以二进制格式保存其数据。数据分析需要额外的工具来解析信息。java任务控制是与 Java飞行记录器 一起使用的事实上的数据可视化工具,尽管其他工具(例如 VisualVM)也可以读取 Java飞行记录器 文件。

java任务控制以视觉上吸引人且易于理解的方式显示 Java飞行记录器 数据。

Java 飞行记录器 API

Java飞行记录器 API 使得以高度定制的方式解析、处理和解释数据文件成为可能。因此,可以对录音进行无头分析。

使用 JFR API 创建火焰图和方法直方图的工具是扩展 Java飞行记录器 和 java任务控制功能的性能分析工具的两个流行示例。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部