Intellij Idea - 分析

分析器提供有关应用程序的见解,例如其 CPU、内存和堆使用情况。它还提供有关应用程序线程的详细信息。本章讨论了 VisualVM 工具对 Java 应用程序分析的用法。它可以分析 CPU 和堆等实体。

建议本教程的读者熟悉应用程序分析器概念。

简介

VisualVM 是一个集成 JDK 工具并为您提供强大分析功能的可视化工具。它允许您生成和分析堆数据、跟踪内存泄漏、监视垃圾收集器并执行内存和 CPU 分析。

好处

  • 在 JVM 上运行的本地和远程 Java 应用程序的可视化界面。

  • 监视应用程序的内存使用情况和应用程序的运行时行为。

  • 监视应用程序线程

  • 分析不同应用程序的内存分配。

  • 线程转储 − 在出现死锁和竞争条件时非常方便。

  • 堆转储 − 在分析堆内存分配时非常方便。

配置

在本节中,我们将学习配置 VisualVM 的步骤。步骤如下 −

  • 此处下载。

  • 解压 zip 文件。

  • 导航到 etc/visualvm.conf 文件并在该文件中添加以下行 −

visualvm_jdkhome=<JDK 路径>
  • 如果您的 JDK 安装在 C:\Program Files\Java\jdk-9.0.1 目录中,那么它应该看起来像这样 −

visualvm_jdkhome="C:\Program Files\Java\jdk-9.0.1"

监控应用程序

现在让我们看看如何监控应用程序。考虑以下步骤以了解相同的 −

  • 双击 visualvm.exe 文件。
  • 从左侧窗格中选择应用程序。
  • 选择监视器选项卡。
Monitoring Application

您将被引导到一个窗口,您将在其中获得有关 CPU、堆、类和线程的详细信息。要具体了解使用情况,请将鼠标悬停在任何图表上。我们可以在上面的屏幕截图中看到堆的使用情况。

关于线程的见解

Java 应用程序可以包含多个执行线程。要了解有关线程的更多信息,请选择特定应用程序的线程选项卡。它将提供有关线程的各种统计信息,例如活动线程和守护线程的数量。不同的线程状态包括运行、休眠、等待、停放和监控。

Insights Threads

采样应用程序

VisualVM 支持 CPU、内存采样和内存泄漏检测。要采样应用程序,请选择应用程序并选择示例选项卡 −

CPU 采样

对于 CPU 采样,请单击 CPU 按钮,如以下屏幕截图所示 −

内存采样

内存分析

要进行内存分析,请单击"内存"按钮,如以下屏幕截图所示 −

内存分析

内存泄漏

当应用程序在运行时慢慢地用程序未自动删除的对象填满堆时,就会发生内存泄漏。

如果程序未使用的对象未被删除,则它将保留在内存中,并且 GC 无法回收其空间。如果应用程序中的字节数和实例数在程序中持续大幅增加,直至用尽所有空间,则可能表明存在内存泄漏。

分析应用程序

在本节中,我们将学习如何分析应用程序。要分析应用程序,请从左侧窗格中选择应用程序,然后单击"分析"选项卡 −

CPU 分析

要执行 CPU 分析,请单击 CPU 按钮,如下面的屏幕截图所示 −

CPU 分析

内存分析

要执行 CPU 分析,请单击 CPU 按钮,如下面的屏幕截图所示 −

CPU 内存分析