IDEA强大的VisualGC插件

前言

开发阶段实时监测,自己的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.hqwc.cn/news/52358.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言案例 不重复数字输出--01

题目:有 1、2、3、4 四个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 步骤一:定义程序目标 编写一个C程序,使用1、2、3、4四个数字组成不相同且不重复的三位数,分别显示出来…

em3288 linux_4.19 第一次烧写无法进入内核的情况

1. 情况一: /DDR Version 1.11 20210818 In SRX Channel a: DDR3 400MHz Bus Width32 Col10 Bank8 Row15 CS1 Die Bus-Width16 Size1024MB Channel b: DDR3 400MHz Bus Width32 Col10 Bank8 Row15 CS1 Die Bus-Width16 Size1024MB OUT Boot1 Release Time: Jul 22 2…

音频转文字软件哪个好用?这些软件你不容错过

在一个繁忙的办公室里,小明正在与他的同事小李聊天。突然,小明兴奋地拍了拍桌子,眉开眼笑地对小李说道:你知道吗?我近期发现了一个实用的音频转文字工具!它可以帮助我们将音频转换成文字。 小李&#xff1…

MyBatis-Plus实现分页查询

目录 MyBatis-Plus实现分页查询 代码 定义一个MyBatis-Plus拦截器 在连接数据库的配置文件中添加MyBatis-Plus日志查看MyBatis-Plus的SQL语句 测试 运行结果 MyBatis-Plus实现分页查询 代码 定义一个MyBatis-Plus拦截器 package com.dong.config;import com.baomidou.my…

钉钉对接打通金蝶云星空获取流程实例列表详情(宜搭)接口与其他应收单接口

钉钉对接打通金蝶云星空获取流程实例列表详情(宜搭)接口与其他应收单接口 对接系统钉钉 钉钉(DingTalk)是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台,提供PC版,Web版和手机版,有考…

boost beast http server 测试

boost beast http client boost http server boost beast 是一个非常好用的库&#xff0c;带上boost的协程&#xff0c;好很多东西是比较好用的&#xff0c;以下程序使用四个线程开启协程处理进入http协议处理。协议支持http get 和 http post #include <boost/beast/cor…

【JS】浏览器不同窗口、标签页或 iframe之间的通讯 - 技术的尽头是魔术

效果 左上↖地址: http://127.0.0.1:5500/index.html 左下↙地址: http://127.0.0.1:5500/index.html?hidden 右上↗地址: http://127.0.0.1:5500/index.html?hidden 右下↘地址: http://127.0.0.1:5500/index.html?hidden index.html <!DOCTYPE html> <html>…

[Docker实现测试部署CI/CD----相关服务器的安装配置(1)]

目录 0、CI/CD系统最终架构图规划IP地址 1、git配置Git下载pycharm配置gitidea配置git 2、GitLab安装与配置主机要求拉取镜像定义 compose.yml启动gitlab浏览器访问并修改密码查看登录密码修改密码 3、SonarQube 安装与配置拉取镜像修改虚拟内存的大小启动SonarQube登录 SonarQ…

IO进程线程第七天(8.4)信号量,条件变量

在第一题的基础上加上一个需求&#xff1a;要求打印&#xff0c;倒置线程&#xff0c;顺序执行。出现的现象为先打印1234567&#xff0c;后打印7654321&#xff08;不使用flag&#xff09; 创建两个线程&#xff0c;其中一个线程读取文件中的数据&#xff0c;另外一个线程将读…

3分钟白话RocketMQ系列—— 核心概念

白话3分钟&#xff0c;快速了解RocketMQ基础&#xff0c;包括适用场景&#xff0c;以及基本概念。 看完如果不了解&#xff0c;欢迎来打我。 关键字摘要 低延迟、高可用、高可靠、高并发 的消息中间件适合在线业务分为producer、consumer、nameserver、broker等角色另外还有主…

【C++】STL——stack和queue的模拟实现、空间适配器、deque的介绍、增删查改函数的简单实现

文章目录 1.deque的简单介绍2.模拟实现stack3.模拟实现queue 1.deque的简单介绍 deque的介绍文档 deque(双端队列)&#xff1a;是一种双开口的"连续"空间的数据结构&#xff0c;双开口的含义是&#xff1a;可以在头尾两端进行插入和删除操作&#xff0c;且时间复杂度…

15 springboot项目——thymeleaf语法与关闭模板引擎

15.1 thymeleaf语法 在html文件中&#xff0c;有些是需要使用本地的css样式&#xff0c;使用thymeleaf语法加载&#xff1a; 首先对head标签上面的html标签进行更改&#xff1a; <html lang"en" xmlns:th"http://www.thymeleaf.org"> 其次&#xff…