VisualVM安装方法
VisualVM 是一个性能分析工具,自从 JDK 6 Update 7 以后已经作为 Oracle JDK 的一部分,位于 JDK 根目录的 bin 文件夹下。VisualVM 自身要在 JDK6 以上的版本上运行,但是它能够监控 JDK1.4 以上版本的应用程序。下面主要介绍如何安装 VisualVM 以及各种 VisualVM 上的插件。
一、安装VisualVM
1、将 VisualVM 安装程序解压缩到本地系统。
2、导航至 VisualVM 安装目录的 bin 目录,然后启动 jvisualvm.exe。
二、安装 VisualVM 上的插件
VisualVM 插件中心提供很多插件以供安装向 VisualVM 添加功能。可以通过 VisualVM 应用程序安装,或者从 VisualVM 插件中心手动下载插件,然后离线安装。另外,用户还可以通过下载插件分发文件 (.nbm 文件 ) 安装第三方插件为 VisualVM 添加功能。
1、VisualVM 插件中心安装插件安装步骤 :
从主菜单中选择“工具”>“插件”。
在“可用插件”标签中,选中该插件的“安装”复选框。单击“安装”。
逐步完成插件安装程序。
2、从主菜单中选择“工具”>“插件”。
在“已下载”标签中,点击"添加插件"按钮,选择已下载的插件分发文件 (.nbm) 并打开。
选中打开的插件分发文件,并单击"安装"按钮,逐步完成插件安装程序。
VisualVM功能
一、绩效分析的主要方式。
1.监控:监控是一种用于在运行时查看应用程序行为的通用方法。通常有多个View实时显示CPU使用情况、内存使用情况、线程状态等有用信息,让用户快速找到问题的关键。
2.转储:性能分析工具从内存中获取当前状态数据,并将其存储在一个文件中,用于静态性能分析。Java程序通过在启动Java程序时添加适当的条件参数来触发转储操作。它包括以下三种类型:
系统转储:JVM生成的本地系统的转储,也叫核心转储。一般系统会转储大量数据,需要平台相关的工具进行分析,比如Windows上的windbg,Linux上的gdb。
Java转储:在JVM内部生成的格式化数据,包括线程信息、类加载信息和堆统计信息。它也常用于检测死锁。
堆转储:JVM将所有对象的堆内容存储到一个文件中。
二、快照:
应用程序启动后,性能分析工具开始收集各种运行时数据,其中一些数据直接显示在监控视图中,而其他大部分数据存储在内部,基于这些存储数据的统计信息直到用户请求获取快照时才会显示。快照包含应用程序在一段时间内的执行信息,通常有两种类型:CPU快照和内存快照。
CPU快照:主要包括应用中函数的调用关系和运行时间,这些信息通常可以在CPU快照视图中查看。
内存快照:主要包括内存的分配和使用,所有加载的类,已有的对象信息,对象之间的引用关系。该信息通常可以在内存快照视图中查看。
三.性能分析:
性能分析是通过收集程序运行时的执行数据,帮助开发人员定位程序中需要优化的部分,从而提高程序的运行速度或内存利用效率,主要包括以下三个方面:
CPU性能分析:CPU性能分析的主要目的是统计函数的调用和执行时间,或者更简单地说,统计应用程序的CPU使用情况。显示CPU性能分析结果通常有两种方式:CPU监控和CPU快照。
内存性能分析:内存性能分析的主要目的是检测可能出现的内存泄漏问题,并通过统计内存使用情况来确定优化内存使用的方向。通常有两种方式显示内存性能分析的结果:内存监控和内存快照。
线程性能分析:线程性能分析主要用于确定多线程应用中的内存问题。包括一般的线程状态变化、死锁和线程在其生命周期中的状态分布。
VisualVM特点
1.记忆分析。
VisualVM通过检测JVM中加载的类和对象的信息来帮助我们分析内存使用情况。我们可以通过VisualVM的监控选项卡和Profiler选项卡来分析应用程序的内存。
2.CPU分析。
VisualVM可以监控一段时间内应用的CPU使用情况,并显示CPU使用情况、执行效率、方法频率等相关数据,帮助我们发现应用的性能瓶颈。我们可以通过VisualVM的监控选项卡和Profiler选项卡来分析应用程序的CPU性能。
3.线程分析。
Java语言可以很好地实现多线程应用。我们在开发后期调试多线程应用或者做性能调优的时候,往往需要知道当前程序中所有线程的运行状态,是否存在死锁、热锁等情况。,从而分析系统中可能存在的问题。
4.快照分析。
我们可以使用VisualVM的快照功能来生成性能分析的任何快照,并将其保存在本地,以帮助我们进行性能分析。快照为捕获应用程序性能分析数据提供了一种方便的方法,因为一旦生成快照,就可以随时脱机打开和查看它们,并且它们还可以相互循环。
VisualVM提供两种类型的快照:
Profiler快照:当性能分析会话(内存或CPU)正在进行时,我们可以通过性能分析结果工具栏中的“snapshot”按钮生成Profiler快照,以捕获当时的性能分析数据。
应用程序快照:我们可以在左侧应用程序窗口中右键单击应用程序节点,然后选择“应用程序快照”来生成应用程序快照。应用快照收集了某个时刻的堆转储、线程转储、Profiler快照,也捕获了JVM的一些基本信息。
5.倾倒功能
线程转储的生成与分析:VisualVM可以为正在运行的本地应用生成线程转储,打印出活动线程的堆栈痕迹,帮助我们有效了解线程的运行情况,诊断死锁、应用瘫痪等问题。
堆转储的生成与分析:VisualVM可以生成堆转储,统计某一时刻JVM中对象的信息,帮助我们分析对象的引用关系,是否存在内存泄漏等。