CPU 和分配分析简介
最后修改时间:2023 年 8 月 23 日本主题介绍 CPU 和分配分析的基本概念。这些概念将帮助您了解 IntelliJ IDEA Profiler 的工作原理。
提示
如果您想亲自动手而不深入研究太多理论,请查看IntelliJ Profiler 教程。它将帮助您开始使用一个简单的示例,并让您了解如何在项目中使用探查器。
IntelliJ IDEA 分析器的工作原理
对于 CPU 和分配分析,IntelliJ IDEA 提供与以下分析器的集成:
Java Flight Recorder – 作为 JDK 的一部分提供的标准分析工具。
异步分析器– 一个非常准确的分析器,还可以收集本机调用和内存分配数据。
默认情况下,IntelliJ IDEA 并行运行两个分析器以提供最准确的结果。虽然可以单独使用受支持的探查器,但对于大多数情况,开箱即用的组合配置是更好的选择。这种方法利用了分析器的优点,并让您从任何设置中抽象出来,除非您有非常具体的要求。
IntelliJ IDEA 分析器收集 CPU 和分配分析数据。这是这意味着什么的简要解释。
CPU分析
CPU 分析通过定期收集所有正在运行的线程的堆栈跟踪来工作。为了实现这一目标,IntelliJ IDEA 分析器同时使用 JVM 和操作系统 API,这使您能够深入了解本机部分并确保准确的 JVM 分析,即使对于仅查询 JVM 的分析器通常会失败的极端情况也是如此。
IntelliJ IDEA 中的分析器使用采样。这意味着 IntelliJ IDEA 探查器不会像基于检测的探查器那样捕获所有方法入口和出口,而是只会定期获取堆栈跟踪。
这会牺牲一小部分数据,这不会影响整体情况,但会带来一些显着的好处,例如最小化分析应用程序上的占用空间。这可以让您对事物有一个公正的看法,甚至可以让您分析生产中的应用程序,而对其性能影响很小。
内存分配分析
IntelliJ IDEA 分析器对内存分配事件做出反应。当此类事件发生时,IntelliJ IDEA 探查器会记录发出请求的线程的调用堆栈以及分配的对象的类型。
此信息可帮助您了解哪些代码路径负责特定类型的分配,以及这些分配的规模有多大。
与 CPU 分析一样,分析器通过仅记录足以形成有意义的图像的数据来最大限度地减少占用空间。
分析工作流程
通常,分析过程包括以下步骤:
收集数据。您可以在应用程序启动时附加分析器,也可以稍后再执行。停止分析后,IntelliJ IDEA 将生成快照。
打开并分析配置文件。在此步骤中,内置工具可帮助您以有意义的形式组织原始数据并根据需要对其进行切片。分析方法可能会根据您的目标而有所不同。
笔记
其中任一步骤都是可选的。例如,在某些情况下,您只需收集数据并将其附加到错误报告或将其发送给某人。另一方面,您可以读取其他人的快照,而无需自己运行应用程序。
感谢您的反馈意见!