JVisualVM的使用教程

本文介绍了如何下载和启动JVisualVM,安装VisualGC插件以增强虚拟机性能监控,包括死循环和普通程序的GC分析,以及CPU使用和内存管理。通过实例演示,学习者可以学会如何利用JVisualVM进行程序优化。
该文章已生成可运行项目,

一、前言

JVisualVM是一个Java虚拟机的监控工具,要是需要对JVM的性能进行监控可以使用这个工具哦

使用这个工具,你就可以监控到java虚拟机的gc过程了

那么,这么强大的工具怎么下载呢?

在JDK1.6后的版本是自带这个工具,它就在你的jdk的bin目录上

image-20210528192339675

如果是默认安装的JDK,一般就在C盘,Program Files的java目录,就会看到你的jdk版本,点进去之后打开bin这个文件夹,就可以看到这个软件了

二、启动JVisualVM

启动方法:

1.进入jdk安装目录的bin目录,双击打开这个程序

2.菜单键+R,输入cmd进入命令行模式,输入命令jvisualvm 启动程序。注:要是使用命令行启动的软件,命令框可不能关闭哦,关闭了的话JVisualVM也会被关闭,切记切记!!!
image-20210529021530180
image-20210529021654563

启动程序之后进入这个界面,这个就是JVisualVM的使用界面了

image-20210528193420711

三、安装插件

使用之前,我们需要安装一个插件,来更好的来观察虚拟机的性能,点击上方的工具-插件

image-20210529022800418

在可用插件那里选择下载,安装一个VIsual GC的插件

image-20210529022846764

一般会报错,因为默认的链接已经给转移了,需要在设置那里把默认的链接更改

点击设置,编辑,把URL更改一下

image-20210529024936028

image-20210529025149446

那URL填什么呢?先确定一下自己的jdk版本号,然后用以下链接去查看URL

确认版本号,可以菜单键+R,执行cmd,输入java -version来查看自己的版本号

image-20210529025343765

比如我的是201

那就在这个网站:https://visualvm.github.io/pluginscenters.html
找到自己版本号的地址,复制URL到设置那里

image-20210529025607753

比如我的是JDK8的201,所以应该是131-291之间,所以我就复制下面那行蓝色的URL到设置的定制器中

image-20210529025821405

然后就可以下载想要的插件啦

image-20210529025950834

然后重启一下即可看到有visual GC这个选项了

image-20210529030154587

四、使用

那我先执行一个不停止的程序

image-20210529030350237

结果是不停的输出1,这是个死循环,我们再回去看看GC

image-20210529030403395

第一次观察

image-20210529030458038

几秒钟后观察

image-20210529030536262

我把这个程序停止掉之后,最后进行观察,左边的test这个java程序就不见了,右边的GC也就停了下来

image-20210529030659873

那现在就开始分析一下这几个过程,就看最后关掉之后的那个状态,可以看到GC time是指发生了多少次的GC,图中就是发生了233次GC,就花了276.256ms的时间,而下一行的Eden区,也是发生了223次GC,花费的时间也是276.256ms,很显然,发生的GC都是在Eden区,Old老年代区发生了0次GC,花费0s。

这只是个普通的死循环,工作量并不大,所以占用不了多少内存空间,根本就不会发生多少次GC,也根本不需要老年代区GC

image-20210529031841633

而右边的进度图,就是说明内存使用的情况,当图中的色块达到顶端的时候,就是内存满的时候,这时候就需要进行一次GC,把内存占用推送到下一个区,满一次清理一次就GC一次

除了可以检测java虚拟机的垃圾回收,还可以监视一下该java程序CPU的占用情况,线程等等。

当我们开发其他程序的时候,可能需要对程序做优化,就要结合这些指标来进行分析,确定优化的方法。比如说CPU使用率一直只有很低,那就说明CPU可以利用的内存比较大,可以适当降低其他的消耗,提升CPU损耗来提升效率等等

image-20210529032509601

当然,除了我提及的各种性能监控和GC过程的查看,还有其他的功能可以使用,比如性能风险,观察各进程的运行情况等等
image-20210529033250362

image-20210529033341558

最后,可能会有小伙伴会问,如果执行的程序不是死循环,而是一个普通的输出呢。如果执行的是那种执行完毕就会停止的,比如我这里把循环条件去掉,使程序只执行一次后停止
image-20210529034047637
image-20210529034106601

点击运行之后返回JVisualVM来查看结果,但JVisualVM并没有显示这个java进程,或者是一闪而过。这是因为JVisualVM只能实时监控到执行中的java程序,因为改动过的程序执行了输出之后就结束了,所以JVisualVM根本没办法去监控程序的状态,前面停止之后还能看到,是因为你已经在停止之前打开了这个程序的监控,在点了停止之后,显示的是停止之前最后一刻的状态

image-20210529034309071
今天的分享就到此结束了,感觉自己又向前迈了一小步,喜欢本文章的小伙伴可以点个赞或者留个评论支持一下哦

本文章已经生成可运行项目
### 如何在 Mac 上使用 JVisualVM #### 安装 JVisualVM 自 JDK 11 起不再默认提供 JVisualVM 工具,因此需要单独安装。可以从 GitHub 的 [Releases · oracle/visualvm](https://github.com/oracle/visualvm/releases) 页面下载适用于 macOS 的最新版本并解压缩到本地磁盘[^2]。 #### 设置环境变量 为了确保 VisualVM 正确识别 Java 环境,在终端执行命令 `/usr/libexec/java_home` 获取当前系统的 JDK 路径,并将其设置给 `JAVA_HOME` 变量。接着编辑 `visualvm.conf` 文件,更新其中的 `visualvm_jdkhome` 属性指向上述路径下的 JDK 版本位置[^3]。 ```bash export JAVA_HOME=$(/usr/libexec/java_home) vim ~/visualvm_219/etc/visualvm.conf ``` 将找到的内容替换为实际的 `$JAVA_HOME` 值: ```properties visualvm_jdkhome="/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home" ``` #### 启动 JVisualVM 通过以下两种方式之一启动应用: - **方法一**: 导航至已解压的 VisualVM 文件夹内的 bin 子目录,运行脚本启动; ```bash cd ~/visualvm_219/bin/ sh visualvm ``` - **方法二**: 如果希望更便捷地访问该工具,可以创建桌面快捷方式或利用 Spotlight 搜索来快速打开它[^5]。 #### 插件管理与配置 进入 Tools -> Plugins 来浏览可用扩展模块列表,推荐至少安装 "Visual GC" 插件以便更好地监视垃圾回收过程和其他内存相关指标[^4]。 #### IDEA 中集成 VisualVM 对于正在使用的 IntelliJ IDEA 开发者来说,可以通过 Preferences -> Other Settings -> VisualVM 对话框指定外部 VisualVM 实例的具体路径,从而实现无缝对接开发工作流的需求。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值