Intellij Idea 简明教程

Intellij Idea - Profiling

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

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

Introduction

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

Benefits

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

  2. 监控应用程序的内存使用情况和应用程序的运行时行为。

  3. Monitoring of application threads

  4. 分析分配给不同应用程序的内存。

  5. 线程转储 - 当出现死锁和竞争状态时,非常有用。

  6. 堆转储 - 在分析堆内存分配时非常有用。

Configuration

在本部分中,我们将学习配置 VisualVM 所执行的步骤。步骤如下:

  1. Download it from here.

  2. Extract the zip file.

  3. 导航到 etc/visualvm.conf 文件,并向文件中添加以下行:

visualvm_jdkhome=<path of JDK>
  1. 如果 JDK 安装在 C:\Program Files\Java\jdk-9.0.1 目录中,则它应如下所示:

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

Monitoring application

现在让我们看看如何监视应用程序。根据以下步骤来理解相同的操作:

  1. 双击 visualvm.exe 文件。

  2. 从左侧窗格中选择应用程序。

  3. Select the monitor tab.

monitoring application

您将被定向到一个窗口,您将在其中获取有关 CPU、堆、类和线程的详细信息。具体来说,将鼠标悬停在任何图表上方即可。我们在上面的屏幕截图中可以看到堆的使用率。

Insights about Threads

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

insights threads

Sampling Application

VisualVM 支持 CPU、内存采样和内存泄漏检测。要对应用程序进行采样,请选择应用程序并选择“采样”选项卡:

CPU sampling

对于 CPU 采样,点击 CPU 按钮,如下面屏幕截图所示:

memory sampling

Memory profiling

对于内存分析,点击内存按钮,如下面屏幕截图所示:

memory profiling

Memory leaks

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

如果程序不使用的对象未被删除,那么它将保留在内存中,GC 无法回收其空间。如果应用程序中的字节数和实例数持续大幅增加,以至于用尽所有空间,则这可能是内存泄漏的征兆。

Profiling application

在本部分中,我们将学习如何对应用程序进行分析。要分析应用程序,请从左侧窗格中选择应用程序,然后单击“分析”选项卡:

CPU profiling

要执行 CPU 分析,请单击屏幕截图所示的 CPU 按钮:

cpu profiling

Memory profiling

要执行 CPU 分析,请单击屏幕截图所示的 CPU 按钮:

cpu memory profiling