[转]visualvm入门指南

KnightKitt KnightKitt     2022-08-09     137

关键词:

VisualVM 提供在 Java 虚拟机 (Java Virutal Machine, JVM) 上运行的 Java 应用程序的详细信息。在 VisualVM 的图形用户界面中,您可以方便、快捷地查看多个 Java 应用程序的相关信息。

本入门指南应当对您快速设置并运行 VisualVM 有所帮助。本指南将演示如何安装 VisualVM,以及如何通过安装 VisualVM 更新中心提供的插件向该工具添加功能。本指南还将介绍如何启动 VisualVM,以及如何查看可以获取的一些有关本地和远程 JVM 上运行的应用程序的信息。

一、安装 VisualVM

  1. 从 VisualVM 项目页下载 VisualVM 安装程序。
  2. 将 VisualVM 安装程序解压缩到本地系统。
  3. 导航至 VisualVM 安装目录的 bin 目录,然后启动应用程序。

  注:在JDK的bin目录中也可以找到Java VisualVM,如C:Program FilesJavajdk1.7.0_80injvisualvm.exe

二、使用“应用程序”窗口

在启动应用程序后,将打开 VisualVM 的主窗口。缺省情况下,“应用程序”窗口显示在主窗口的左窗格中。在“应用程序”窗口中,可以快速查看本地和远程 JVM 上运行的 Java 应用程序

技术分享

“应用程序”窗口是查看特定应用程序详细信息的主入口点。右键单击应用程序节点将打开弹出式菜单,从该弹出式菜单中可以选择是打开主应用程序标签,还是生成线程 dump 或堆 dump。

有关如何使用“应用程序”窗口查看和保存应用程序相关数据的更多详细信息,请参见以下页面:

三、浏览堆 Dump

VisualVM 有一个可视化窗口,通过该窗口可以轻松浏览堆 dump。您可以装入现有堆 dump,或为本地运行的应用程序生成堆快照。

要生成本地应用程序的堆 dump,可以执行下列任一操作:

  • 在“应用程序”窗口中右键单击应用程序节点,然后选择“堆 Dump”。
  • 在“应用程序”窗口中双击应用程序节点以打开应用程序标签,然后在“监视”标签中单击“堆 Dump”。

要打开保存的堆 dump,请从主菜单中选择“文件”>“装入”,然后找到保存的堆 dump。

浏览打开的堆 dump:

  1. 单击“堆 Dump”工具栏中的“”,以查看活动类对应实例的列表。
  2. 双击某个类名打开“实例”视图,以查看实例列表。
  3. 从列表中选择某个实例,以查看对该实例的引用。

技术分享

在生成堆 dump 后,VisualVM 将在新标签中打开该堆 dump,并在“应用程序”窗口中的应用程序节点下为该堆 dump 创建一个节点。要保存生成的堆 dump,请右键单击该堆 dump 节点,然后选择“另存为”。如果没有明确保存生成的堆 dump,则在应用程序关闭时将删除该 dump。

有关更多信息,请参见以下文档:

四、对应用程序进行性能分析

VisualVM 包括一个 Profiler,可以使用它对本地 JVM 上运行的应用程序进行性能分析。您可以在应用程序标签的 "Profiler" 标签中访问性能分析控件。通过该 Profiler,可以分析本地应用程序的内存使用情况和 CPU 性能。
注意:要对 JDK 6 上运行的应用程序进行性能分析,需要关闭该应用程序的类共享,否则该应用程序可能会崩溃。要关闭类共享,请使用 -Xshare:off 参数启动应用程序。

  1. 启动本地 Java 应用程序。(使用 -Xshare:off 参数启动该应用程序。)
  2. 在“应用程序”窗口的“本地”节点下,右键单击该应用程序节点,然后选择“打开”以打开该应用程序标签。
  3. 在该应用程序标签中单击 "Profiler" 标签。
  4. 在 "Profiler" 标签中单击“内存”或 "CPU"。

    在选择性能分析任务后,VisualVM 将在 "Profiler" 标签中显示性能分析数据。

技术分享

有关使用 VisualVM 进行性能分析的更多信息,请参见以下文档:

五、连接到远程主机

通过 VisualVM,可以轻松监视远程主机上运行的应用程序,并查看有关远程系统的常规数据。要查看远程主机上应用程序的相关信息,必须首先连接到远程主机。已连接的远程主机将列在“应用程序”窗口的“远程”节点下。展开远程主机节点可查看远程主机上运行的应用程序。

要从远程应用程序中检索数据,需要在远程 JVM 上运行 jstatd 实用程序。有关如何启动 jstatd 的更多信息 请参见 jstatd - Virtual Machine jstat Daemon(jstatd - 虚拟机 jstat 守护进程)。无法对远程主机上运行的应用程序进行性能分析。

  1. 右键单击“应用程序”窗口中的“远程”节点,然后选择“添加远程主机”。
  2. 在“添加远程主机”对话框中,键入远程计算机的主机名或 IP 地址。
  3. (可选)键入远程主机的显示名称。此名称将显示在“应用程序”窗口中。如果没有输入显示名称,则在“应用程序”窗口中使用主机名标识远程主机。
  4. 单击“确定”。

单击“确定”后,将在“远程”节点下显示远程主机的节点。展开远程主机节点可查看远程主机上运行的 Java 应用程序。

您可以双击远程应用程序的名称,在 VisualVM 中打开该应用程序标签。

技术分享

有关更多信息,请参见以下文档:

六、安装 VisualVM 插件

通过安装 VisualVM 更新中心提供的插件,可以向 VisualVM 添加功能。例如,安装 VisualVM-MBeans 插件可以向应用程序标签中添加 "MBeans" 标签,通过此标签,可以在 VisualVM 内监视和管理 MBeans

安装 VisualVM 插件:

  1. 从主菜单中选择“工具”>“插件”。
  2. 在“可用插件”标签中,选中该插件的“安装”复选框。单击“安装”。
  3. 逐步完成插件安装程序。

技术分享

该屏幕快照显示了选中 VisualVM-MBeans 插件的“插件”管理器。

七、其他 VisualVM 文档

本文档介绍了 VisualVM 的某些功能。VisualVM 旨在提供一个直观的可视界面,使您可以轻松浏览有关本地和远程 JVM 上运行的 Java 应用程序的信息。有关使用 VisualVM 功能的更多详细信息,请参见以下文档:

 

注:此文摘自 https://visualvm.java.net/zh_CN/gettingstarted.html?Java_VisualVM ,注:在Visual启动时,其首页中也有该文档的链接。 


为啥 VisualVM 为 VisualVM 本身运行 50 个线程?

】为啥VisualVM为VisualVM本身运行50个线程?【英文标题】:WhyisVisualVMrunning50threadsforVisualVMitself?为什么VisualVM为VisualVM本身运行50个线程?【发布时间】:2017-09-1719:48:50【问题描述】:更新提出这个问题的另一种方式是“应用程序可... 查看详情

visualvm的使用,

1、下载后点击exe,提示cannotfindjava1.7orheigher:visualvm_135/etc/visualvm.conf找到注释掉的visualvm_jdkhome="*****"项,打开注释改为本机jdk的绝对地址即可。tomcat配置:Dcatalina.home=d:Tomcat7.0-Dcatalina.base=d:Tomcat7.0-Djava.endorsed 查看详情

利用visualvm监视远程jvm

VisualVM介绍VisualVM是集成了多个JDK命令工具的一个可视化工具,它主要用来监控JVM的运行情况,可以用它来查看和浏览HeapDump、ThreadDump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。在JDKUpdate7之后,VisualVM作为JDK的... 查看详情

idea安装visualvm及使用(代码片段)

1.VisualVM是什么按照VisualVM官网(http://visualvm.github.io/)上的介绍,VisualVM是一个集成命令行JDK工具和轻量级分析功能的可视化工具。专为开发和生产时间使用而设计。我们在jdk安装包中也可以发现它2.IDEA安装VisualVM插件File-> ... 查看详情

VisualVM - 奇怪的自我时间

】VisualVM-奇怪的自我时间【英文标题】:VisualVM-strangeselftime【发布时间】:2016-09-2417:00:00【问题描述】:今天我对我得到的VisualVM分析结果感到困惑。我有以下简单的Java方法:publicclassEncoder...privateBitStringencode(InputStreamin,Map<Char... 查看详情

VisualVM、Scala 和 Ubuntu?

】VisualVM、Scala和Ubuntu?【英文标题】:VisualVM,ScalaandUbuntu?【发布时间】:2011-12-1117:47:58【问题描述】:我在Ubuntu11.10(64位)下使用VisualVM时遇到问题。我正在使用最新的Java1.6版本(1.6.0_29-b11)和Scala2.9.1。VisualVM没有在Monitor的选项... 查看详情

调试 VisualVM 远程连接

】调试VisualVM远程连接【英文标题】:DebuggingVisualVMremoteconnection【发布时间】:2012-05-1100:28:07【问题描述】:我在亚马逊云中的Linux服务器上运行Tomcat6。我正在尝试通过我办公室的Mac上的VisualVM连接到它。我已允许打开我的桌面... 查看详情

VisualVM 的问题 - 连接到远程主机时

】VisualVM的问题-连接到远程主机时【英文标题】:ProblemwithVisualVM-whenconnectingtoremotehost【发布时间】:2008-12-2415:51:38【问题描述】:我是Java开发新手,第一次使用VisualVm。我在从VisualVm界面连接远程主机时遇到了一些问题。我在远... 查看详情

使用 VisualVM 分析 tomcat 应用程序

】使用VisualVM分析tomcat应用程序【英文标题】:ProfilingtomcatapplicationwithVisualVM【发布时间】:2016-08-1823:08:45【问题描述】:我试图在用户名tomcat6下运行visualvm,因为显然visualvm只能找到在其用户名下运行的应用程序。因此,默认情... 查看详情

VisualVM 中的“总加载”是啥意思?

】VisualVM中的“总加载”是啥意思?【英文标题】:Whatdoes"Totalloaded"meaninVisualVM?VisualVM中的“总加载”是什么意思?【发布时间】:2011-06-2714:44:35【问题描述】:VisualVM中“Monitor->Classes”下标有“Totalloaded”的图是什么... 查看详情

VisualVM 和 GlassFish

】VisualVM和GlassFish【英文标题】:VisualVMandGlassFish【发布时间】:2013-04-0915:11:12【问题描述】:目前,我正在尝试清除我的JSF/PrimeFacesWeb应用程序中的瓶颈。为此,我安装了VisualVM及其GlassFish插件。我无法通过JMX显式“分析”,但... 查看详情

Java 1.6 JDK 工具,VisualVM

】Java1.6JDK工具,VisualVM【英文标题】:Java1.6JDKtool,VisualVM【发布时间】:2008-09-1619:31:29【问题描述】:有没有人使用新的Java1.6JDK工具VisualVM来分析生产应用程序以及应用程序在分析时的执行情况?文档说它是为生产和开发使用而... 查看详情

visualvm可以发送自动邮件通知吗

】visualvm可以发送自动邮件通知吗【英文标题】:Canvisualvmsendautomaticemailnotification【发布时间】:2013-09-2712:53:05【问题描述】:我们在Tomcat6x上托管了一个Web应用程序,并希望设置一个服务器健康监控工具,例如visualvm,它可以在... 查看详情

使用 VisualVM 分析 Tomcat 应用程序

】使用VisualVM分析Tomcat应用程序【英文标题】:ProfileTomcatApplicationWithVisualVM【发布时间】:2010-12-2519:33:26【问题描述】:我想使用VisualVM工具分析在Tomcat上运行的应用程序。不幸的是,当我告诉VisualVM分析Tomcat时,Tomcat会打印出几... 查看详情

使用 VisualVM 监控 Java 应用程序

】使用VisualVM监控Java应用程序【英文标题】:MonitorJavaapplicationwithVisualVM【发布时间】:2013-07-3118:16:17【问题描述】:我的EC2实例上运行了一些Java程序。我想使用VisualVM对它们进行分析。它们不是在Jetty或Tomcat上运行的Web应用程序... 查看详情

解释 VisualVM 回溯

】解释VisualVM回溯【英文标题】:InterpretingaVisualVMbacktrace【发布时间】:2017-07-1716:52:59【问题描述】:我正在MandelbrotSet浏览器上进行CPU分析。出于某种原因,java.lang.PersistentHashMap$BitmapIndexedNode.find使用了相当大比例的总CPU时间。... 查看详情

visualvm监控jvm

VisualVM远程监控JVM内存溢出问题方式一:jststd[[email protected]]#java-versionjavaversion"1.7.0_79"Java(TM)SERuntimeEnvironment(build1.7.0_79-b15)JavaHotSpot(TM)64-BitServerVM(build24.79-b02,mixedmode)[[email&# 查看详情

VisualVM 分析正在污染结果

】VisualVM分析正在污染结果【英文标题】:VisualVMprofilingispollutingresults【发布时间】:2012-01-1012:36:54【问题描述】:我正在使用VisualVM内存分析来分析应用程序的内存分配行为。不幸的是,分析过程本身似乎污染了我的结果。我不... 查看详情