📅  最后修改于: 2020-11-16 07:12:02             🧑  作者: Mango
Profiler提供有关您的应用程序的见解,例如其CPU,内存和堆使用情况。它还提供了有关应用程序线程的详细信息。本章讨论VisualVM工具用于Java应用程序分析的用法。它可以分析诸如CPU和堆之类的实体。
建议本教程的读者熟悉应用程序分析器的概念。
VisualVM是集成JDK工具并为您提供强大的性能分析功能的可视化工具。它使您可以生成和分析堆数据,跟踪内存泄漏,监视垃圾收集器以及执行内存和CPU性能分析。
JVM上运行的本地和远程Java应用程序的可视界面。
监视应用程序的内存使用情况和应用程序的运行时行为。
监视应用程序线程
分析对不同应用程序的内存分配。
线程转储-在出现死锁和竞争情况时非常方便。
堆转储-在分析堆内存分配时非常方便。
在本节中,我们将学习配置VisualVM所执行的步骤。步骤如下-
从这里下载。
解压缩zip文件。
导航到etc / visualvm.conf文件,并在此文件中添加以下行-
visualvm_jdkhome=
如果您的JDK安装在C:\ Program Files \ Java \ jdk-9.0.1目录中,则它应该看起来像这样-
visualvm_jdkhome="C:\Program Files\Java\jdk-9.0.1"
现在让我们看看如何监视应用程序。考虑以下步骤以了解相同之处-
您将被带到一个窗口,在该窗口中您将获得有关CPU,堆,类和线程的详细信息。要具体说明用法,请将鼠标悬停在任何图形上。我们可以在上面的屏幕截图中看到Heap的用法。
Java应用程序可以包含多个执行线程。要了解有关线程的更多信息,请选择特定应用程序的“线程”选项卡。它将提供有关线程的各种统计信息,例如活动线程和守护程序线程的数量。不同的线程状态是运行,睡眠,等待,驻留和监视。
VisualVM支持CPU,内存采样和内存泄漏检测。要对应用程序进行示例,请选择应用程序,然后选择示例选项卡-
对于CPU采样,单击CPU按钮,如以下屏幕截图所示-
要进行内存分析,请单击“内存”按钮,如以下屏幕截图所示:
当应用程序在运行时缓慢地用程序不会自动删除的对象填充堆时,就会发生内存泄漏。
如果未删除程序未使用的对象,则该对象仍保留在内存中,GC无法回收其空间。如果应用程序中的字节数和实例数在程序中不断增加并且显着增加到耗尽所有空间的程度,则可能表示内存泄漏。
在本节中,我们将学习如何分析应用程序。要对应用程序进行概要分析,请从左窗格中选择应用程序,然后单击概要文件选项卡-
要执行CPU分析,请单击CPU按钮,如下面的屏幕截图所示-
要执行CPU分析,请单击CPU按钮,如下面的屏幕截图所示-