VisualVM是一个专门用于监控Java的虚拟机JVM的监控工具,大家都知道java的环境下许多东西都是命令行的形式,而这款工具能够让用户获得一个图形界面来方便你快捷的查看多个java应用程序的相关信息。
通俗的讲,VisualVM是一种集成了多种JDK命令行工具的可视化工具,能够为我们的用户提供强大的分析能力,而且最主要的就是这些全部免费,你可以不花费任何代价,就可以利用这款软件管理好自己的java应用程序,当然用户如果想要使用最新的软件还是需要最新的java/soft/4845.html版本的。当然,VisualVM的功能还是非常强大的,一些工具能够帮助用户生成和分析海量数据、跟踪内存泄露、监控垃圾回收器、执行内存和CPU分析等等,有需要的用户不要错过哦。
1、监视:监视是一种用来查看应用程序运行时行为的一般方法。通常会有多个视图(View)分别实时地显示 CPU 使用情况、内存使用情况、线程状态以及其他一些有用的信息,以便用户能很快地发现问题的关键所在。
2、转储:性能分析工具从内存中获得当前状态数据并存储到文件用于静态的性能分析。Java 程序是通过在启动 Java 程序时添加适当的条件参数来触发转储操作的。它包括以下三种:
3、系统转储:JVM 生成的本地系统的转储,又称作核心转储。一般的,系统转储数据量大,需要平台相关的工具去分析,如 Windows 上的 windbg 和 Linux 上的 gdb。
4、Java 转储:JVM 内部生成的格式化后的数据,包括线程信息,类的加载信息以及堆的统计数据。通常也用于检测死锁。
5、堆转储:JVM 将所有对象的堆内容存储到文件。
6、快照:应用程序启动后,性能分析工具开始收集各种运行时数据,其中一些数据直接显示在监视视图中,而另外大部分数据被保存在内部,直到用户要求获取快照,基于这些保存的数据的统计信息才被显示出来。快照包含了应用程序在一段时间内的执行信息,通常有 CPU 快照和内存快照两种类型。
7、CPU 快照:主要包含了应用程序中函数的调用关系及运行时间,这些信息通常可以在 CPU 快照视图中进行查看。
8、内存快照:主要包含了内存的分配和使用情况、载入的所有类、存在的对象信息及对象间的引用关系等。这些信息通常可以在内存快照视图中进行查看。
9、性能分析:性能分析是通过收集程序运行时的执行数据来帮助开发人员定位程序需要被优化的部分,从而提高程序的运行速度或是内存使用效率,主要有以下三个方面:
10、CPU 性能分析:CPU 性能分析的主要目的是统计函数的调用情况及执行时间,或者更简单的情况就是统计应用程序的 CPU 使用情况。通常有 CPU 监视和 CPU 快照两种方式来显示 CPU 性能分析结果。
11、内存性能分析:内存性能分析的主要目的是通过统计内存使用情况检测可能存在的内存泄露问题及确定优化内存使用的方向。通常有内存监视和内存快照两种方式来显示内存性能分析结果。
12、线程性能分析:线程性能分析主要用于在多线程应用程序中确定内存的问题所在。一般包括线程的状态变化情况,死锁情况和某个线程在线程生命期内状态的分布情况等。
1、内存分析
VisualVM 通过检测 JVM 中加载的类和对象信息等帮助我们分析内存使用情况,我们可以通过 VisualVM 的监视标签和 Profiler 标签对应用程序进行内存分析。
在监视标签内,我们可以看到实时的应用程序内存堆以及永久保留区域的使用情况。
此外,我们也可以通过 Applications 窗口右击应用程序节点来启用“在出现 OOME 时生成堆 Dump”功能,当应用程序出现 OutOfMemory 例外时,VisualVM 将自动生成一个堆转储。
在 Profiler 标签,点击“内存”按钮将启动一个内存分析会话,等 VisualVM 收集和统计完相关性能数据信息,将会显示在性能分析结果。通过内存性能分析结果,我们可以查看哪些对象占用了较多的内存,存活的时间比较长等,以便做进一步的优化。
此外,我们可以通过性能分析结果下方的类名过滤器对分析结果进行过滤。
2、CPU 分析
VisualVM 能够监控应用程序在一段时间的 CPU 的使用情况,显示 CPU 的使用率、方法的执行效率和频率等相关数据帮助我们发现应用程序的性能瓶颈。我们可以通过 VisualVM 的监视标签和 Profiler 标签对应用程序进行 CPU 性能分析。
在监视标签内,我们可以查看 CPU 的使用率以及垃圾回收活动对性能的影响。过高的 CPU 使用率可能是由于我们的项目中存在低效的代码,可以通过 Profiler 标签的 CPU 性能分析功能进行详细的分析。如果垃圾回收活动过于频繁,占用了较高的 CPU 资源,可能是由内存不足或者是新生代和旧生代分配不合理导致的等。
在 Profiler 标签,点击“CPU”按钮启动一个 CPU 性能分析会话 ,VisualVM 会检测应用程序所有的被调用的方法。当进入一个方法时,线程会发出一个“method entry”的事件,当退出方法时同样会发出一个“method exit”的事件,这些事件都包含了时间戳。然后 VisualVM 会把每个被调用方法的总的执行时间和调用的次数按照运行时长展示出来。
此外,我们也可以通过性能分析结果下方的方法名过滤器对分析结果进行过滤。
3、线程分析
Java 语言能够很好的实现多线程应用程序。当我们对一个多线程应用程序进行调试或者开发后期做性能调优的时候,往往需要了解当前程序中所有线程的运行状态,是否有死锁、热锁等情况的发生,从而分析系统可能存在的问题。
在 VisualVM 的监视标签内,我们可以查看当前应用程序中所有活动线程和守护线程的数量等实时信息。
VisualVM 的线程标签提供了三种视图,默认会以时间线的方式展现。另外两种视图分别是表视图和详细信息视图。
时间线视图上方的工具栏提供了缩小,放大和自适应三个按钮,以及一个下拉框,我们可以选择将所有线程、活动线程或者完成的线程显示在视图中。
4、快照功能
我们可以使用 VisualVM 的快照功能生成任意个性能分析快照并保存到本地来辅助我们进行性能分析。快照为捕获应用程序性能分析数据提供了一个很便捷的方式因为快照一旦生成可以在任何时候离线打开和查看,也可以相互传阅。
VisualVM 提供了两种类型的快照:
Profiler 快照:当有一个性能分析会话(内存或者 CPU)正在进行时,我们可以通过性能分析结果工具栏的“快照”按钮生成 Profiler 快照捕获当时的性能分析数据。
应用程序快照:我们可以右键点击左侧 Applications 窗口中应用程序节点,选择“应用程序快照”为生成一个应用程序快照。应用程序快照会收集某一时刻的堆转储,线程转储和 Profiler 快照,同时也会捕获 JVM 的一些基本信息。
5、转储功能
线程转储的生成与分析
VisualVM 能够对正在运行的本地应用程序生成线程转储,把活动线程的堆栈踪迹打印出来,帮助我们有效了解线程运行的情况,诊断死锁、应用程序瘫痪等问题。
当 VisualVM 统计完应用程序内线程的相关数据,会把这些信息显示新的线程转储标签。
VisualVM 能够生成堆转储,统计某一特定时刻 JVM 中的对象信息,帮助我们分析对象的引用关系、是否有内存泄漏情况的发生等。
当 VisualVM 统计完堆内对象数据后,会把堆转储信息显示在新的堆转储标签内,我们可以看到摘要、类、实例数等信息以及通过 OQL 控制台执行查询语句功能。
堆转储的摘要包括转储的文件大小、路径等基本信息,运行的系统环境信息,也可以显示所有的线程信息。
从类视图可以获得各个类的实例数和占用堆大小数,分析出内存空间的使用情况,找出内存的瓶颈,避免内存的过度使用。
通过实例数视图可以获得每个实例内部各成员变量的值以及该实例被引用的位置。首先需要在类视图选择需要查看实例的类。
此外,还能对两个堆转储文件进行比较。通过比较我们能够分析出两个时间点哪些对象被大量创建或销毁。
展开内容
9.0/164.27M
github电脑版是一个面向开源及私有软件项目的托管平台,因为只支持"Git"作为唯一的版本库格式进行托管,所以称之为github。总得来说这款软件是每一位使用开源工具进行开发的用户的必备产品,除了git代码仓库托管及基本的web管理以外,还为用户提供了订阅、讨论组、文本渲
8.6/143.86M
JProfiler 是一款方便易用且功能全面的Java性能分析工具,由国外j-technologies GmbH公司全新开发打造而成、这款软件专用于分析J2SE和J2EE应用程序,它把对CPU、执行线程和内存的剖析组合在一个强大的应用中,让你方便的找到效能瓶颈、内存泄漏(m
9.1/3.76M
seraph脚本编辑器是一款行内顶尖的脚本控制软件,不知道大家接触过鼠标点击器没有,其中有一个功能就是脚本来实现的,而seraph脚本编辑器就是这样的一样脚本生成器,设置键盘上的任意一个按键,然后seraph脚本编辑器就会直接生产脚本代码,非常的使用且方便!
9.1/51.98M
ApexSQL Generate是一款强大的SQL Server测试数据生成器。功能上软件就为用户们提供了指定的列项和表格生成测试数据,支持预定义生成器、表格映射、生成数据的预览、随机化测试数据、跨数据库数据生成自定义SQL语句等功能,非常适合SQL Server数据库开发人员使
8.9/152.81M
JDK17官方中文版是SunMicrosystems公司专门针对于java语言打造的开发工具包,jdk的出现是Java发展历程中的重要里程碑,标志着Java成为一种独立的开发工具。
Microsoft.NET Runtime(微软NET运行库)
9.1/217.88M
Microsoft.NET Runtime(微软.NET运行时)是Windows操作系统用于.NET构建的应用程序所需的基础类型库组件。小编这次给大家带来的是微软NET 5.0运行时离线版,这次的版本更新非常重视 .NET 的统一性,微软希望 .NET Framework 开发者
8.8/8.55M
zprotect(软件加壳工具)是一款非常优秀的应用程序加壳软件能够轻松的保护用户的软件免受他人的恶意破解,拥有的多项革命性创新技术,将用户的软件保护的非常不错,减少因为盗版给用户带来众多经济损失,使许多独立开发人员保护自身利益的不二神器。
9.0/164.27M
github电脑版是一个面向开源及私有软件项目的托管平台,因为只支持"Git"作为唯一的版本库格式进行托管,所以称之为github。总得来说这款软件是每一位使用开源工具进行开发的用户的必备产品,除了git代码仓库托管及基本的web管理以外,还为用户提供了订阅、讨论组、文本渲
查看
9.0/11.63M
HttpClient是Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
10.0/2.61M
scite编辑器是一款很好用的编辑器I,主要针对代码编辑,比如C/C++、PHP、C#、Perl等等,安装完即可使用,而且相比较于其他同类软件,小编带来的这款最亮眼的就是支持用户导出,你可以轻松的将编写完的代码导出为PDF/HTML/RTF等格式的文件,并且高亮的内容也可以
9.0/1.18M
使用PHP进行开发需要许多工具来帮助用户来进行管理代码,这款composer就是一款非常不错的全球知名的PHP依赖管理工具,是许多网页开发用户需要用到的管理工具。软件允许用户申明项目所以来的代码库,然后他就会在你的项目中帮助你安装他们,比如一些框架,像是laravel这一类的PH
9.1/10.32M
jquery api是一个专门对jQuery进行说明帮助的文档。也就是我们常常用到的“使用说明书”了。那么jquery是什么?首先jQuery里面的文档非常的丰富,主要是因为其轻量级的特性,所以里面的代码内容并不是很复杂,随着新版本的发布,很快就被翻译成了多国语言。
9.5/195K
lamp一键安装包是一个基于CentOS/RadHat可以VPS或独立主机上方便,快速安装的Shell脚本程序包,快速安装lamp应用(Apache、MySQL、PHP、phpMyAdmin)的生产环境。
9.0/48.49M
groovy是一种基于JVM的开发语言,也是一种功能强大的可选类型和动态语言,具有静态类型和静态编译功能,适用于java品台,旨在通过简洁,熟悉且易于学习的语法提高开发人员的工作效率,该语言还结合了Python、Ruby和Smalltalk的许多强大的特性。
9.0/180.39M
Apifox电脑版官方版是一个API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,定位 Postman + Swagger + Mock + JMeter。
9.5/1.26M
c32asm中文版是一款强大且小巧的反汇编工具,具有反汇编模式和十六进制编辑模式。其提供hex文件编辑功能,还能够直接修改软件的内部代码,实现各种反编译效果。
9.0/2.61M
jclasslib电脑版是一款实用且开源的java字节码查看小工具,Java作为一门面向对象编程语言,被广泛使用,所以小编今天特意为广大编程人员带来了jclasslib电脑版,软件可以直接查看java字节码,让有利于你对代码的分析,不仅如此,jclasslib电脑版还可以允许开发
9.1/2.47M
代码统计工具中文版是一款专业实用的代码统计工具,专门用于统计大量的代码数量。软件主要支持对C++、VB.Net、VB、C#、JAVA等30多种代码格式进行统计,也支持将统计结果以CSV或HTML文件格式进行保存。