IDEA强大的VisualGC插件

news/2024/11/24 22:48:40/

前言

开发阶段实时监测,自己的JVM信息,实时可视化 Hotspot JVM 垃圾回收监控工具, 支持查看本地和远程JVM进程, 支持G1 and ZGC算法。

插件安装

在线安装

IntelliJ IDEA 可通过在线安装的方式,安装插件 JDK VisualGC,安装步骤:

  1. IDEA界面 Ctrl+Alt+S(调出设置页面)
  2. Plugins 在其中搜索 JDK VisualGC,搜索结果如下所示:
alt

离线安装

  1. JDK VisualGC官方离线 选择对应的版本下载即可
  2. IDEA设置Plugins,选择离线安装 alt

用法

概述

整个界面主要分为四个区域,分别为:Spaces、Graphs、Histogram和JVM浏览器。

如果需要不依赖IDEA单独运行, 请移步: VisualGC 3.0 独立运行增强版, 支持JDK 8

  1. **停止监控 按钮: **点击后会停止当前JVM进程的GC监控.
alt

和 Java, Spring Boot 项目及 Tomcat 项目集成

alt
alt
  1. JVM 浏览器窗口: 呈现了当前探测到的所有 Java 进程列表, 双击即可进入垃圾回收监控界面。

  2. Spaces/空间窗口: 呈现了程序运行时我们比较关注的几个区域的内存使用情况

应用程序信息: 显示了当前进程的命令行执行参数等详细信息。

  • Metaspace: 方法区,如果JDK1.8之前的版本,就是Perm,JDK7和之前的版本都是以永久代(PermGen)来实现方法区的,JDK8之后改用元空间来实现(MetaSpace)。
  • Old: 老年代
  • Eden: 新生代Eden区 (伊甸园, 指代所有对象最初产生的地方)
  • S0和S1:新生代的两个 Survivor(存活) 区
  1. Graphs/图表窗口: 该窗口区域包含8个以上的图表,以时间为横坐标动态展示各个指标的运行状态

下面从上往下对各个图表及其状态进行说明

  • Compile Time:编译情况 24266 compoles - 39.416s 表示编译总数为24266,编译总耗时为39.416s。 一个脉冲表示一次JIT编译,脉冲越宽表示编译时间越长。

  • Class Loader Time:类加载情况 49052 loaded,39 unloaded - 29.937s表示已加载的数量为49052,卸载的数量为39,耗时为29.537s。

  • GC Time:总的(包含新生代和老年代)gc情况记录 123 collections,859.203ms Last Cause:Allocation Failure表示一共经历了123次gc(包含Minor GC和Full GC),总共耗时859.203ms。

GC 明细时间的执行情况记录 这里会随着JVM使用的GC算法的不同, 显示一到多个GC详情图表。

  • Eden Space:新生代Eden区内存使用情况 (200.00M,34.125M): 31.52M,109 collections,612.827ms表示Eden区的最大容量为200M,当前容量为34.125M,当前已使用31.52M,从开始监控到现在在该内存区域一共发生了109次gc(Minor GC),gc总耗时为612.827ms。

  • Survivor 0和Survivor 1:新生代的两个Survivor区内存使用情况 (25.000M,4.250M):1.757M表示该Survivor区的最大容量为25M(默认为Eden区的1/8),当前已用1.757M。

  • Old Gen:老年代内存使用情况 (500.000M,255.195M):206.660M,14 collections,246.375ms表示老年区的最大容量为500M,当前容量为255.195M,当前已用206.660M,从开始监控到现在在该内存区域一共发生了14次gc(Full GC),gc总耗时为246.375ms,换算下可以看出单次Full GC要比Minor GC耗时长很多。

  • Metaspace:方法区内存使用情况 (1.053G,278.250M):262.345M表示方法区最大容量为1.053G,当前容量为278.250M,当前使用量为262.345MM。

  1. Histogram/存活直方图窗口: Histogram窗口是对当前正在被使用的Survivor区内存使用情况的详细描述,
  • Tenuring Threshold: 我们知道Survivor区中的对象有一套晋升机制,就是其中的每个对象都有一个年龄标记,每当对象在一次Minor GC中存活下来,其年龄就会+1,当对象的年龄大于一个阈值时,就会进入老年代,这个阈值就是Tenuring Threshold,要注意这个值不是固定不变的,一般情况下Tenuring Threshold会与Max Tenuring Threshold大小保持一致,可如果某个时刻Servivor区中相同年龄的所有对象的内存总等于Survivor空间的一半,那Tenuring Threshold就会等于该年龄,同时大于或等于该年龄的所有对象将进入老年代。
  • Max Tenuring Threshold: 表示新生代中对象的最大年龄值,这个值在JDK1.8中默认为6,在JDK1.7及之前的版本中默认为15,可以通过参数-XX:MaxTenuringThreshold来指定。
  • Desired Survivor Size: Survivor空间大小验证阈值(默认是survivor空间的一半),用于给Tenuring Threshold判断对象是否提前进入老年代。
  • Current Survivor Size: 当前Survivor空间大小,单位为字节(Byte,B)。
  • Histogram柱状图: 表示Survivor中不同年龄段对象分布。

激活

【网站地址】: jihuo.live (支持离线激活和IDEA激活通用)

alt

本文由 mdnice 多平台发布


http://www.ppmy.cn/news/1001374.html

相关文章

第一章-JavaScript基础进阶part1:DOM

文章目录 前言一、DOM简介1.1 DOM树 二、获取DOM元素1、根据元素id获取-getElementById2、根据元素名称获取元素对象-getElementsByTagName3、H5新增API获取元素4、获取body和html元素 三、DOM元素事件四、操作DOM元素1、改变元素内容2、常用元素的属性操作3、实践案例4、操作D…

【电网技术复现】考虑实时市场联动的电力零售商鲁棒定价策略(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

C# Blazor 学习笔记(9):动态css/class绑定

文章目录 前言相关资料css和class绑定直接绑定间接绑定 前言 之前我们说到,我们组件化有三个目的。 不用写CSS不用写html不用写交互逻辑 为了解决第一个目的,我们需要动态css 相关资料 Blazor入手教程(二)css和class绑定 cs…

【《快速构建AI应用——AWS无服务器AI应用实战》——基于云的解决方案快速完成人工智能项目的指南】

基于云的人工智能服务可以自动完成客户服务、数据分析和财务报告等领域的各种劳动密集型任务。其秘诀在于运用预先构建的工具,例如用于图像分析的Amazon Rekognition或用于自然语言处理的AWS Comprehend。这样,就无须创建昂贵的定制软件系统。 《快速构…

编写Dockerfile构建Docker镜像

文章目录 什么是DockerFile编写DockerFile构建运行镜像修改镜像源 什么是DockerFile Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 编写DockerFile 1.首先安装docker服务 sudo apt install docker.io 2.编写Docker…

Python接口自动化之使用requests库发送http请求

requests库 ​ 什么是Requests ?Requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库。它⽐ urllib 更加⽅便,可以节约我们⼤量的⼯作,完全满⾜HTTP测试需求。 ​ 安装:cmd命…

MacOS上配置docker国内镜像仓库地址

背景 docker官方镜像仓库网速较差,我们需要设置国内镜像服务 我的MacOS docker版本如下 设置docker国内镜像仓库地址 点击Settings点击Docker Engine修改配置文件,添加registry-mirrors {"builder": {"gc": {"defaultKeepS…

【性能调优-实例演示】CPU爆了怎么定位问题--》调试指令性能分析工具

性能调优 定位生产性能问题 生产环境,CPU Memory 告警 top:找出占CPU比较高的进程${pid}(内存增长,CPU居高不下)top -Hp ${pid}:显示所有线程的CPU占比,观察进程中的线程,找出哪个…