重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这期内容当中小编将会给大家带来有关Java多功能Profiling工具JVisual VM怎么用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
创新互联主要从事成都网站设计、做网站、成都外贸网站建设公司、网页设计、企业做网站、公司建网站等业务。立足成都服务昌黎,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
开发 Java 的朋友一定都遇到过应用不同种类的问题,有些时候是应用 Bug 分析,有些时候是应用性能调优,应用的 Profiling,GC 分析等。
这个时候,有不少的工具可供选择,有商业的,有开源的可供不同的场景下使用。我们本次的多功能 Profile 工具,依然是 JDK 自带的一款,可用于多种场景下的应用监控于分析。
这款工具就是JVisual VM,全称是 Java VisualVM。是一款可视化的 Java VM 应用分析工具。
启动后是这个样子:
分本地和远程两种,罗列了当前的 JVM 进程。 远程的进程是通过 JMX 进行连接,有一些本地的 Profile 功能不支持。
我们以本地进程为例,来介绍下Visual VM 常见功能。
双击要分析的 JVM 进程,在打开的 Tab 中选择功能,默认会显示概述、监视、线程、抽样器和 Profiler 这几项。
由于Visual VM 实现和 NetBeans 一致,所以可以通过插件的方式,增加许多功能。
在【工具】菜单,选择【插件】,打开下图,然后选择要安装的插件,也可以将插件下载到本地再安装。格式是一个扩展名为nbm类型的文件。
像我们稍后要介绍的Visual GC, BTrace 都是通过插件安装,来增加对应功能的。
概述
在概述这个 Tab 中,会有当前 JVM 进程的一些基本信息,包含 JVM的参数,系统属性,Main-class 等等。类似如下图:
请注意上图红框,这个是一般启动时配置的一个JVM选项,可以在 OOM 产生时生成一个堆的 dump,方便事后分析。如果没有在启动时配置,默认是关闭的。这里也显示是禁用。
通过 Visual VM,可以实时变更该选项,右击对应的 JVM 进程,在弹出菜单中选择【在出现OOME时生成堆 Dump】
选择之后,对应的概述处变为启用。
监视
在该 Tab 中会显示 CPU,堆的使用,已装入的类的情况,以及线程的活动情况等。关键是这里有两个按钮【执行垃圾回收】和【堆 Dump】。
垃圾回收会进行一次 Full GC,堆的Dump会生成一个当前的dump文件供分析。
线程
线程 Tab 会将当前进程的所有线程按时间线的形式开出来。可以根据不同的线程状态进行查看。这里还可以进行线程的 Dump,和 jstack 功能一致,生成一个所有线程的运行调用图。(jstack,可以查看前面的文章了解。Java七武器系列霸王枪 -- 线程状态分析 jstack)
抽样器
可以按照 CPU 和内存进行抽样, 和Profiler类似,我们后面介绍。
Profiler
在众多功能中,该功能可用于进行应用的 Profiling,分析应用方法的占用时间,内存中各个类的对象数量及大小等。
下方的图是CPU profiling,分析方法的执行时间。
这张图是内存的 profiling,显示对象在内存中的数量及大小
通过这两种 profiling,对于应用中有内存占用较多的情况发生时,可以观察是哪些对象占用,是否有些代码中存在的总是导致生成的大量无用的对象等。
这两个功能和工具 MAT 的几个功能类似。
Visual GC
注意:该 Tab 需要安装插件后才能显示。
一直以来,Java 的 GC 对于我们来说只能通过在命令行中展示的方式,或者是从 gc log 里查看一些 执行情况,Visual VM 的 Visual GC 插件,可以让我们更直观的观察 堆的占用,GC 的执行情况等,是个可视化的GC 查看工具。
通过这个工具,能够观察堆各个区域的大小,占用情况等。比如在配置了Xms, PermSize, 或者一些 xxxRation之类的,具体分到各个代的大小是多少,除了计算之外,可以在这里直观的查看。
同时,在每个每个 Gen 旁边,都有显示 GC 的执行次数和时间。
BTrace
前面的文章写过使用 BTrace 分析总是,当时是介绍通过命令行的方式。在 Visual VM 的插件里,也有 BTrace 的插件,安装之后,可以在本地的 JVM 进程上右击选择 【Trace application】,就会打开该 Tab,然后在窗口中直接编译 Trace 脚本,执行结果也会在窗口中显示。
注意这里有一个Unsafe的开关,可以使用BTrace的更多操作,靠选择checkbox是打不开的。需要在@BTrace注解后增加内容,格式如下:
@BTrace(unsafe=true)
这样即可,checkbox会自动选中。
堆Dump
生成堆dump之后,相当于对当前的堆做了一个镜像,可以基于此分析应用内的一些问题。
整个dump中,除了摘要外,还有类,实例数等和 Profiler 中实时内容一致。此外,还包含线程的 stackTrace。
在类中双击任意一个要关注的,会打开实例数视图,显示该类对应的各个实例的数据
在OQL控制台中可以通过招待OQL来查看对象的信息,和前面 SA中介绍的类似。(Java七武器系列长生剑 -- Java虚拟机的显微镜 Serviceability Agent)
发现没有,其实 JDK 提供的这些工具中,有许多功能都是相同的,通过统一的接口,在不同的应用中提供相应的数据,一处水源供全球。
上述就是小编为大家分享的Java多功能Profiling工具JVisual VM怎么用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。