VisualVM是集成了多个jdk命令行工具的可视化,一般用于Java应用的性能分析和调优。功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾收集器、执行内存和CPU分析,它还支持MBeans上的浏览和操作。有需要尽快下载!
功能介绍
一、绩效分析的主要方式
1.监控:监控是一种查看应用程序运行时行为的通用方法。通常有多个视图来实时显示CPU使用情况、内存使用情况、线程状态等有用信息,以便用户快速找到问题的关键。
2.dump:performance analysis工具从内存中获取当前状态数据,并将其存储在一个文件中,以便进行静态性能分析。Java程序通过在启动Java程序时添加适当的条件参数来触发转储操作。它包括以下三种类型:
系统转储:由JVM生成的本地系统转储,也称为核心转储。一般系统转储大量数据,需要平台相关的工具来分析,比如Windows上的windbg,Linux上的gdb。
Java dump:JVM内部生成的格式化数据,包括线程信息、类加载信息和堆统计信息。它也常用于检测死锁。
堆转储:JVM将所有对象的堆内容存储到一个文件中。
二、快照:
应用启动后,performance analysis 工具开始收集各种运行时数据,其中一些数据直接显示在监控视图中,而其他大部分数据保存在内部,基于这些保存数据的统计信息直到用户请求快照时才显示。快照包含了应用程序在一段时间内的执行信息,通常有两种:CPU快照和内存快照。
CPU快照:主要包括应用中函数的调用关系和运行时间,通常可以在CPU快照视图中查看。
内存快照:主要包括内存的分配和使用情况,所有加载的类,已有的对象信息以及对象之间的引用关系。通常可以在内存快照视图中查看这些信息。
三、绩效分析:
性能分析是通过收集程序运行时的执行数据,帮助开发者定位程序中需要优化的部分,从而提高程序的运行速度或内存使用效率,主要表现在以下三个方面:
CPU性能分析:CPU性能分析的主要目的是统计函数的调用和执行时间,或者更简单的说是统计应用的CPU使用率。通常有两种方式显示CPU性能分析的结果:CPU监控和CPU快照。
内存性能分析:内存性能分析的主要目的是通过统计内存使用情况,检测可能存在的内存泄漏问题,确定优化内存使用的方向。通常有两种方式显示内存性能分析的结果:内存监控和内存快照。
线程性能分析:线程性能分析主要用于确定多线程应用程序中的内存问题。一般来说,它包括线程状态的变化、死锁以及线程在其生命周期中的状态分布。
软件特色
1.记忆分析
VisualVM通过检测JVM中加载的类和对象信息来帮助我们分析内存使用情况,我们可以通过VisualVM的monitoring标签和Profiler标签来分析应用程序的内存。
2.CPU分析
VisualVM它可以监控一段时间内应用的CPU使用情况,显示CPU使用率、执行效率、方法使用频率等相关数据,帮助我们找到应用的性能瓶颈。我们可以通过VisualVM的monitoring标签和Profiler标签来分析应用的CPU性能。
3.线程分析
Java语言可以很好的实现多线程应用。我们在开发后期调试一个多线程应用或者做性能调优的时候,往往需要了解当前程序中所有线程的运行状态,是否存在死锁、热锁等等,以便分析系统中可能存在的问题。
4.快照分析
我们可以使用VisualVM的快照来生成性能分析的任何快照,并将其保存在本地,以协助我们进行性能分析。快照提供了一种捕获应用程序性能分析数据的便捷方式,因为快照一旦生成,就可以随时离线打开和查看,还可以互相传阅。
VisualVM提供两种类型的快照:
Profiler快照:当性能分析会话(内存或CPU)正在进行时,我们可以通过单击性能分析结果工具列中的“快照”按钮来生成一个Profiler快照,以捕获当时的性能分析数据。
应用程序快照:我们可以在左侧的应用程序窗口中右键单击应用程序节点,选择“应用程序快照”来生成应用程序快照。应用快照会收集某一时刻的堆转储、线程转储和Profiler快照,还会捕获JVM的一些基本信息。
5.转储功能
线程转储的生成与分析:VisualVM可以为正在运行的本地应用生成线程转储,并打印出活动线程的堆栈痕迹,帮助我们有效了解线程的运行情况,诊断死锁、应用瘫痪等问题。
堆转储的生成与分析:VisualVM可以生成堆转储,统计特定时刻JVM中的对象信息,帮助我们分析对象的引用关系,是否存在内存泄漏等。
安装方法
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)并打开它。
选择打开的插件分发文件,点击“安装”按钮,逐步完成插件安装程序。
更新日志
变化
功能和改进。
GH-260:完全支持在JDK 16上运行和监控/描述Java 16进程。
GH-262:增加对苹果M1的支持
GH-270:导入VisualVM以前版本的插件。
GH-275:添加了有关启用模块的信息。
GH-279:增加了保留尺寸计算的部分进度。
GH-254:更新者品牌效应。
Python的堆栈跟踪
heap viewer-逻辑值添加了instant,attributes $ name,fdbiginger,java。lang .模块。
heap viewer-java。util类的逻辑值——集合现在显示的元素数量。
格拉德应用识别器
更新了JDK工具的应用程序识别器。
API变化。
GH-282:向org的公共API添加泛型。graalvm . visual VM . lib . jfluid . heap包。
GH-283:增加了从实例获取堆的方法。
修复了Bug。
GH-127:G1GC的最大堆不正确。
GH-257:& quot;无法打开快照。"因为压缩数据没有被完全读取
GH-263:保留大小被计算为负数。
GH-268:检查VisualVM是否在Eclipse OpenJ9上运行。
GH-272:计算引用时没有进度条。
GH-273: NPE:无法调用"java. lang . management . memorymxbean . GC()& quot;
GH-274:逻辑值:& # 39;...'添加到完整的字符串中。
GH-276:缺乏已知的阻断方法。
GH-277:不正确的水平滚动
Gh-278:龙缓冲区的NPE。
GH-280:MAC OS上不正确的背景颜色选择。
堆查看器Python模块、SourceImpl$Key、InetSocketAddress和BigDecimal的逻辑值是固定的。
内存采样器-改进了过载情况下的刷新功能
改进了对IntelliJ应用程序的检测。
VisualVM(java调优工具)相关下载
- 查看详情Hutool(Java基础工具包)简体2022-12-28
- 查看详情W3Cschool离线版2017简体2022-12-16
- 查看详情 Hutool(Java基础工具包) 简体 2022-12-28
- 查看详情 W3Cschool离线版2017 简体 2022-12-16
- 查看详情 Spring Boot 简体 2023-02-16
- 查看详情 Strapi(开源无头CMS) 英文 2023-02-16
- 查看详情 Data Masker for SQL Server(数据库工具) 英文 2023-02-16