VisualVM

VisualVM

VisualVM基本认识

官网http://visualvm.github.io/
**VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于 Java 技术的应用程序(Java 应用程序)的详细信息。**您可以查看本地应用程序以及远程主机上运行的应用程序的相关数据。此外,还可以捕获有关 JVM 软件实例的数据,并将该数据保存到本地系统,以供后期查看或与其他用户共享。

jvisualvm是随jdk一同发布的jvm诊断工具,通过插件可以扩展很多功能,插件扩展也是jvisualvm的精华所在。自从 JDK 6 Update 7 以后已经作为 Oracle JDK 的一部分,位于 JDK 根目录的 bin 文件夹下,无需安装,直接运行即可。

运行java程序的时候启动visualvm,方便查看jvm的情况 比如堆内存大小的分配
某个对象占用了多大的内存,jvm调优必备工具

visualvm工具使用教程
参考URL: https://blog.csdn.net/qq_23747821/article/details/79675193?utm_source=blogxgwz0
性能分析神器VisualVM
参考URL: http://www.cnblogs.com/wade-xu/p/4369094.html
VisualVM使用方法
https://blog.csdn.net/lijie1010/article/details/78805837

visualvm功能

◆监控应用程序的性能和内存占用情况
◆监控应用程序的线程
◆分析(Profile)应用程序性能和内存分配情况
◆进行线程转储(Thread Dump)或堆转储(Heap Dump)
◆分析核心转储(Core Dump)
◆保存快照以便脱机分析应用程序。

本地的JVM进程Visual VM会自动检测出来。默认的监控信息并不多,基本功能有点像JConsle,并没有包含更细的内容。此时需要安装插件(Visual VM自带了安装插件的功能),这是Visual VM 的一个优势。

VisualVM和JConsole

JConsole(以下写作jconsole),VisualVM(以下写作jvisualvm )
都是比较好的JVM调优工具,且都为JDK自带,可在命令行直接启动。

Visual VM比较强大的JVM图形化监控工具,比jconsole强大完善。

VisualVM远程连接配置

用VisualVM进行远程连接的配置和JConsole是一样的。

  1. 设置JVM启动参数
    //JMX监听的IP地址
    -Djava.rmi.server.hostname=192.168.x.x
    //JMX端口
    -Dcom.sun.management.jmxremote.port=2990
    //关闭SSL连接
    -Dcom.sun.management.jmxremote.ssl=false
    //关闭帐号密码验证
    -Dcom.sun.management.jmxremote.authenticate=false

idea集成

  1. 安装VisualVM插件 VisualVM
    2.安装后,重启Idea
    3.安装完成后,在原来的Run和Debug按纽旁会多出两个按纽,点击后会出现选择VisualVM路径,选择本地JDK安装目录下的bin目录中的jvisualvm即可。
    在这里插入图片描述
    6.这时点击启动,会多打开一个VisualVM的窗口。(也可以正常点击Run按纽运行程序,在控制台有个橘黄色的按纽也可打开VisualVM)

VisualVM使用

  1. 打开VisualVM,在Tools->Plugins中安装Visual GC插件,然后再启动IDEA,可以从VisualVM左侧的列表中看到对应的程序,双击可以看到右侧的数据

界面如下:
在这里插入图片描述
右侧有Overview、Monitor、Threads、Sampler和Visual GC几个标签,其中Overview中可以看到程序的基本信息和启动参数、环境变量等等;Monitor是几个折线图,用于显示CPU、内存(分为Heap和Metaspace)、Classes和Threads的使用情况或者数量;Visual GC是用图形化的方式显示了Heap的每个空间,如Eden、S0、S1、Old和Metaspace的使用情况,以及它们的空间使用量的变化折线图,和GC的次数、时间等等。在这里我们主要关注Monitor和Visual GC标签。

概述界面

在这里插入图片描述
Ø PID – 程序启动后的进程号,在命令行中可以用 jps命令查看

Ø 主机 – 如果是本机的话显示,localhost,如果是远程主机应该是显示远程主机的主机名或者IP

Ø 主类 – 程序入口类(main方法所在的类)

Ø 参数 – VisualVm 启动的时候使用的一些配置文件路径

Ø JVM – jvm类型

Ø Java – jdk的版本信息

Ø Java Home – JDK安装目录

l JVM参数 – VisualVm 启动时候设置的JVM参数

监控界面 系统资源占用情况

在这里插入图片描述
Ø CPU – 展示java程序运行的时候占用的cpu资源 如下图中橙色的表示程序运行使用的cpu资源百分比,蓝色部分表示垃圾回收占用CPU资源百分比

Ø 堆 – 这里要说明下堆内存的组成部分,堆是由老年代和新生代组成,其中新生代有由"伊甸园"和"两个幸存区组成"三部分组成,堆视图看到的资源占用实际是"老年代"、“伊甸园(Eden)”、"两个幸存者(Survivor )"的一个综合情况。

Ø PermGen – Perm 区用来存放java类以及其他虚拟机自己的静态数据,(常被称为持久代或者方法区

Ø 类 – 此视图 主要展示 当前程序加载了多少个类

Ø 线程 – 当前程序的线程启动情况

§ 执行垃圾回收 – 手动触发一次GC 相当于在程序代码中调用(System.gc()),如果是远程连接到生产环境中请慎重点击。

§ 堆Dump – 生产当前程序的内存快照hprof文件,对于分析内存溢出问题比较有帮助。(可以查看当前程序内存中的所有对象)

线程页面 程序中所有的线程运行状态

在这里插入图片描述
Ø 线程dump – 此按钮主要生产当前程序中所有线程的快照(对分析线程死锁,比较有帮助)

Ø 时间线 – 展示每个线程的实时运行状态(不同颜色代表不同的状态)

Ø 表 – 按照二维表格的形式展示每个线程不同状态的时间统计信息

Ø 详细信息 – 用饼图展示每个线程的运行状态

抽取样

在这里插入图片描述
CPU-> CPU样例 – 主要展示方法消耗的CPU资源比例和时间
CPU->线程CPU时间 – 主要展示线程消耗的CPU资源信息
内存-> 堆柱状图 – 展示堆内存中各种对象占用的字节数和总实例数
内存-> 每个线程分配—展示不同线程占用内存的情况

VisualGC插件界面

在这里插入图片描述

jdk8 Metaspace 调优
参考URL: https://blog.csdn.net/bolg_hero/article/details/78189621
从JDK8开始,永久代(PermGen)的概念被废弃掉了,取而代之的是一个称为Metaspace的存储空间。
Java 8: 从永久代(PermGen)到元空间(Metaspace)
参考URL: https://blog.csdn.net/zhyhang/article/details/17246223?utm_source=blogxgwz0

JVM Metaspace进行了动态扩展,Metaspace使用的是本地内存,而不是堆内存,也就是说在默认情况下Metaspace的大小只与本地内存大小有关,以满足程序中不断增长的类数据内存占用需求。

堆 = Old+Eden+S0+S1
栈 = PerM区(在java8中改成了metaspace)

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VisualVM是一个功能强大的Java虚拟机(JVM)监控和性能分析工具。它可以与各种Java开发工具集成,其中包括JetBrains的IntelliJ IDEA。 要在IntelliJ IDEA中使用VisualVM,您可以按照以下步骤进行操作: 1. 在IntelliJ IDEA中,打开您要进行性能分析的Java项目。 2. 转到“Run”菜单,然后选择“Edit Configurations”选项。 3. 在“Edit Configurations”对话框中,选择您的应用程序配置。 4. 在右侧面板中,找到“VM options”字段,并添加以下参数: ``` -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9010 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false ``` 这些参数将启用Java虚拟机监视和管理功能,并将其暴露在本地端口9010上。 5. 保存配置并运行您的应用程序。 6. 打开VisualVM工具。 7. 在VisualVM中,单击“File”菜单,然后选择“Add JMX Connection”选项。 8. 在“Add JMX Connection”对话框中,输入以下信息: - JMX Connection:localhost:9010(根据您在第4步中指定的端口进行更改) - Display Name:任意名称以标识此连接 - Username和Password:如果您在第4步中启用了身份验证,则需要提供凭据。 9. 单击“OK”以添加JMX连接。 10. 现在,您可以使用VisualVM来监控和分析您的应用程序的性能。 请注意,这只是VisualVM与IntelliJ IDEA集成的一种方法。还有其他方法可以使用VisualVM进行性能分析,例如使用命令行启动JVM并将其连接到VisualVM。根据您的需求和偏好,您可以选择适合您的方法来使用VisualVM与IntelliJ IDEA。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值