乐趣区

关于jvm:JVisualVM的使用教程

一、前言

JVisualVM 是一个 Java 虚拟机的监控工具,要是须要对 JVM 的性能进行监控能够应用这个工具哦

应用这个工具,你就能够监控到 java 虚拟机的 gc 过程了

那么,这么弱小的工具怎么下载呢?

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

如果是默认装置的 JDK,个别就在 C 盘,Program Files 的 java 目录,就会看到你的 jdk 版本,点进去之后关上 bin 这个文件夹,就能够看到这个软件了

二、启动 JVisualVM

启动办法:

1. 进入 jdk 装置目录的 bin 目录,双击关上这个程序

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

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

三、装置插件

应用之前,咱们须要装置一个插件,来更好的来察看虚拟机的性能,点击上方的工具 - 插件

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

个别会报错,因为默认的链接曾经给转移了,须要在设置那里把默认的链接更改

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

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

确认版本号,能够菜单键 +R,执行 cmd,输出 java -version 来查看本人的版本号

比方我的是 201

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

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

而后就能够下载想要的插件啦

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

四、应用

那我先执行一个不进行的程序

后果是不停的输入 1,这是个死循环,咱们再回去看看 GC

第一次察看

几秒钟后察看

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

那当初就开始剖析一下这几个过程,就看最初关掉之后的那个状态,能够看到 GC time 是指产生了多少次的 GC,图中就是产生了 233 次 GC,就花了 276.256ms 的工夫,而下一行的 Eden 区,也是产生了 223 次 GC,破费的工夫也是 276.256ms,很显然,产生的 GC 都是在 Eden 区,Old 老年代区产生了 0 次 GC,破费 0s。

这只是个一般的死循环,工作量并不大,所以占用不了多少内存空间,基本就不会产生多少次 GC,也基本不须要老年代区 GC

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

除了能够检测 java 虚拟机的垃圾回收,还能够监督一下该 java 程序 CPU 的占用状况,线程等等。

当咱们开发其余程序的时候,可能须要对程序做优化,就要联合这些指标来进行剖析,确定优化的办法。比如说 CPU 使用率始终只有很低,那就阐明 CPU 能够利用的内存比拟大,能够适当升高其余的耗费,晋升 CPU 损耗来晋升效率等等

当然,除了我提及的各种性能监控和 GC 过程的查看,还有其余的性能能够应用,比方性能危险,察看各过程的运行状况等等

最初,可能会有小伙伴会问,如果执行的程序不是死循环,而是一个一般的输入呢。如果执行的是那种执行结束就会进行的,比方我这里把循环条件去掉,使程序只执行一次后进行

点击运行之后返回 JVisualVM 来查看后果,但 JVisualVM 并没有显示这个 java 过程,或者是一闪而过。这是因为 JVisualVM 只能实时监控到执行中的 java 程序,因为改变过的程序执行了输入之后就完结了,所以 JVisualVM 基本没方法去监控程序的状态,后面进行之后还能看到,是因为你曾经在进行之前关上了这个程序的监控,在点了进行之后,显示的是进行之前最初一刻的状态


明天的分享就到此结束了,感觉本人又向前迈了一小步,喜爱本文章的小伙伴能够点个赞或者留个评论反对一下哦

退出移动版