VisualVMV2.0.7中文版 |
![]() ![]() |
|
![]() |
VisualVM简介: VisualVM是一款集成了多个JDK命令行的可视化工具,可以有效地对JAVA应用程序进行性能分析、优化以及调整等操作 。通常来说都用来对JAVA应用程序做性能分析和调优,内存优化、CPU分析、线程分析、快照分析、转储分析等多项非常强而有效的功能,它还支持在MBeans上进行浏览和操作,有需要用到这款VisualVM java调优工具的用户快快前来获取吧! 安装方法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.监视:监视是一种用来查看应用程序运行时行为的一般方法 。通常会有多个KKX视图(View)分别实时地显示 CPU 使用情况、内存使用情况、线程状态以及其他一些有用的信息,以便用户能很快地发现问题的关键所在 。 2.转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分析 。Java 程序是通过在启动 Java 程序时添加适当的条件参数来触发转储操作的 。它包括以下三种: 系统转储:JVM 生成的本地系统的转储,又称作核心转储 。一般的,系统转储数据量大,需要平台相关的工具去分析,如 Windows 上的 windbg 和 Linux 上的 gdb. Java 转储:JVM 内部生成的格式化后的数据,包括线程信息,类的加载信息以及堆的统计数据 。通常也用于检测死锁 。 堆转储:JVM 将所有对象的堆内容存储到文件 。 二、快照: 应用程序启动后,性能分析工具开始收集各种运行时数据,其中一些数据直接显示在监视视图中,而另外大部分数据被保存在内部,直到用户要求获取快照,基于这些保存的数据的统计信息才被显示出来 。快照包含了应用程序在一段时间内的执行信息,通常有 CPU 快照和内存快照两种类型 。 CPU 快照:主要包含了应用程序中函数的调用关系及运行时间,这些信息通常可以在 CPU 快照视图中进行查看 。 内存快照:主要包含了内存的分配和使用情况、载入的所有类、存在的对象信息及对象间的引用关系等 。这些信息通常可以在内存快照视图中进行查看 。 三、性能分析: 性能分析是通过收集程序运行时的执行数据来帮助开发人员定位程序需要被优化的部分,从而提高程序的运行速度或是内存使用效率,主要有以下三个方面: CPU 性能分析:CPU 性能分析的主要目的是统计函数的调用情况及执行时间,或者更简单的情况就是统计应用程序的 CPU 使用情况 。通常有 CPU 监视和 CPU 快照两种方式来显示 CPU 性能分析结果 。 内存性能分析:内存性能分析的主要目的是通过统计内存使用情况检测可能存在的内存泄露问题及确定优化内存使用的方向 。通常有内存监视和内存快照两种方式来显示内存性能分析结果 。 线程性能分析:线程性能分析主要用于在多线程应用程序中确定内存的问题所在 。一般包括线程的状态变化情况,死锁情况和某个线程在线程生命期内状态的分布情况等 VisualVM特色1、运行内存分析 更新日志GH-260: 完全支持在JDK 16上运行并监控/描述Java 16进程 GH-262: 增加对苹果M1的支持 GH-270: 从以前的VisualVM版本导入插件 GH-275: 增加关于启用模块的信息 GH-279: 增加保留尺寸计算的部分进度 GH-254: 更新器的品牌效应 。 Python的堆栈跟踪 HeapViewer - 逻辑值增加了Instant, Attributes$Name, FDBigInteger, java.lang.module HeapViewer - java.util类的逻辑值--集合现在显示元素的数量 Gradle的应用识别器 更新了JDK工具的应用识别器 API变更 。 GH-282: 在org.graalvm.visualvm.lib.jfluid.heap包的公共API中添加泛型 。 GH-283: 增加了从实例中获取Heap的方法 。 修复了Bug 。 GH-127: G1GC的最大堆不正确 GH-257: "打开快照失败 。"由于没有完全读取压缩数据 GH-263: 保留的大小计算为负数 GH-268: 检测VisualVM是否在Eclipse OpenJ9上运行 GH-272: 计算引用时没有进度条 GH-273: NPE:无法调用 "java.lang.management.MemoryMXBean.gc()" GH-274: 逻辑值:~...~被添加到完整的字符串中 GH-276: 缺少已知的阻塞方法 GH-277: 不正确的水平滚动 GH-278:LongBuffer.startReading()处的NPE 。 GH-280: 在MacOS上选择背景颜色不正确 HeapViewer--PythonModule、SourceImpl$Key、InetSocketAddress、BigDecimal的逻辑值固定 。 内存采样器--改进了重载下的刷新功能 改进了对IntelliJ应用程序的检测 |
![]() 电信下载:VisualVM 移动下载:VisualVM 联通下载:VisualVM |