Performance Tuning -- 05 -- JVisualVM的使用

原文链接:Performance Tuning – 05 – JVisualVM的使用


相关文章:


在之前我们提到了,当遇到内存溢出、程序卡顿、CPU 占用率过高等情况下,我们可以通过 jmap、jstack 等 JDK 自带的命令通过命令行来进行分析,不过命令行操作不是很直观,那么有没有可视化的监控工具呢,答案是肯定的,这里我们就来了解下 JDK 自带的监控管理工具 JVisualVM


一、功能概览

  • JVisualVM 位于 JDK 的 bin 目录下,它可以监控本地所有的 Java 进程,这里我们启动之前测试内存溢出和死循环、死锁用到的项目

    • 应用程序
      在这里插入图片描述

      • 如上所示,本地标签中展示了本地所有的 Java 进程 (实时展示)
    • 概述
      在这里插入图片描述
      在这里插入图片描述

      • 如上所示,在概述页面中我们可以查看当前 Java 进程的 JVM 参数 以及系统属性
    • 监视
      在这里插入图片描述

      • 如上所示,在监视页面中,我们可以实时监控 CPU 的使用情况、堆的使用情况、类的装载情况以及线程的活动情况

      • 除此之外,我们还可以主动执行垃圾回收以及生成堆 Dump 文件

      • 在发生内存溢出时,我们可以在此处生成堆 Dump 文件用 JVisualVM 来进行分析,这与之前提到的用 jmap 命令生成堆 Dump 文件,用 MAT 来进行分析是相类似的,两种方式都能很好地解决内存溢出的问题

    • 线程
      在这里插入图片描述

      • 如上所示,在线程页面中,我们可以实时监控该 Java 进程中所有线程的运行情况

      • 除此之外,我们还可以生成线程 Dump 文件,可用于分析解决死循环、死锁等问题,这与之前提到的 jstack 命令的作用是相类似的

    • 抽样器
      在这里插入图片描述
      在这里插入图片描述

      • 如上所示,在抽样器页面中,我们可以对 CPU 以及内存进行抽样分析

      • 在 CPU 抽样中,我们可以查看各个热点方法执行的时间,而不用我们手动在程序里写 startTime 和 endTime 来进行执行时间的运算了

      • 在内存抽样中,相当于执行了 jstat 命令,每隔一秒钟打印一次内存情况,可以查看各个对象占用的字节以及相应的实例数

    • Profiler

      • 作用于抽样器基本相同
    • Visual GC
      在这里插入图片描述

      • 如上所示,在 Visual GC 页面,我们可以查看 JVM 运行时各个内存区域的 GC 情况

二、添加插件

  • 默认情况下,是没有 Visual GC 标签的,需要下载相应的插件

  • 首先我们上 JVisualVM 的插件中心 (Plugins Centers),根据自己的 JDK 版本复制相应的插件地址,这里我的版本是 1.8.0_151,所以下载的是 JDK 8 Update 131 - 221
    在这里插入图片描述

  • 接着再将插件地址设置进 JVisualVM 的插件中心
    在这里插入图片描述

  • 最后我们上可用插件中,下载 Visual GC 插件即可 (由于我已经安装过该插件了,所以插件页面不再有显示)
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值