Profiling
Profiler提供有关您的应用程序的见解,如CPU,内存和堆使用情况。 它还提供有关应用程序线程的详细信息。 本章讨论VisualVM工具在Java应用程序分析中的用法。 它可以分析CPU和堆等实体。
建议本教程的读者熟悉应用程序分析器概念。
介绍 (Introduction)
VisualVM是一个可视化工具,它集成了JDK工具并为您提供了强大的分析功能。 它允许您生成和分析堆数据,跟踪内存泄漏,监视垃圾收集器以及执行内存和CPU分析。
好处 (Benefits)
在JVM上运行的本地和远程Java应用程序的可视界面。
监视应用程序的内存使用情况和应用程序的运行时行为。
监视应用程序线程
分析不同应用程序的内存分配。
线程转储 - 在遇到死锁和竞争条件时非常方便。
堆转储 - 在分析堆内存分配时非常方便。
配置 (Configuration)
在本节中,我们将学习配置VisualVM所执行的步骤。 步骤如下 -
从here下载。
解压缩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应用程序可以包含多个执行线程。 要了解有关线程的更多信息,请选择特定应用程序的“线程”选项卡。 它将提供有关线程的各种统计信息,例如活动线程数和守护程序线程数。 不同的线程状态是Running,Sleeping,Waiting,Park和Monitor。
抽样申请
VisualVM支持CPU,内存采样和内存泄漏检测。 要示例应用程序,请选择应用程序并选择示例选项卡 -
CPU采样
对于CPU采样,单击CPU按钮,如以下屏幕截图所示 -
内存分析
对于内存分析,单击Memory按钮,如以下屏幕截图所示 -
内存泄漏
当应用程序在运行时,会慢慢使用程序未自动删除的对象填充堆,从而发生内存泄漏。
如果未删除程序未使用的对象,则它将保留在内存中,GC无法回收其空间。 如果应用程序中的字节数和实例数在程序中持续显着增加到占用所有空间,则可能表示存在内存泄漏。
分析应用程序
在本节中,我们将学习如何分析应用程序。 要分析应用程序,请从左窗格中选择应用程序,然后单击配置文件选项卡
CPU分析
要执行CPU分析,请单击CPU按钮,如下面的屏幕截图所示 -
内存分析
要执行CPU分析,请单击CPU按钮,如下面的屏幕截图所示 -