Intellij Idea - 分析


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

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

介绍

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

好处

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

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

  • 监控应用程序线程

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

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

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

配置

在本节中,我们将了解配置 VisualVM 所执行的步骤。步骤如下 -

  • 从这里下载。

  • 提取 zip 文件。

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

visualvm_jdkhome=<path of JDK>
  • 如果您的 JDK 安装在C:\Program Files\Java\jdk-9.0.1目录中,那么它应该如下所示 -

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

监控应用

现在让我们看看如何监控应用程序。考虑以下步骤来理解相同的内容 -

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

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

关于线程的见解

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

见解主题

样品申请

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

CPU采样

对于 CPU 采样,请单击 CPU 按钮,如下图所示 -

内存采样

内存分析

对于内存分析,单击“内存”按钮,如以下屏幕截图所示 -

内存分析

内存泄漏

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

如果程序不使用的对象没有被删除,那么它仍然保留在内存中,GC 无法回收其空间。如果应用程序中的字节数和实例数不断显着增加,直至耗尽所有空间,这可能表明存在内存泄漏。

分析应用

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

CPU分析

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

CPU 分析

内存分析

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

CPU 内存分析