JVM-jvisualvm性能监控可视化工具使用与eden-s0-s1分配分析

news2024/12/26 22:55:39

目录

第一步:安装jvisualvm

 第二步:安装VisualvmGc插件

方式一:jvisualvm工具直接下载安装

方式二:去官网下载导入安装

总结

第三步:idea安装VisualvM Launcher插件

第四步:演示young中eden、s0、s1垃圾回收过程

1、配置jvm堆大小

 2、启动一个项目

3、打开jvisualvm

第五步:jvisualvm性能监控可视化工具使用

1、菜单使用介绍

1.1、概述

1.2、监控

1.3、线程

1.4、抽样器

 第六步:总结


第一步:安装jvisualvm

jvisualvm在安装完jdk的时候就已经存在了,自动安装在jdk安装目录bin下面。windows可以到安装目录下直接执行exe文件。

然后双击执行,就自动打开界面:

 为了分析young区内存分布与回收机制,我们还需要一个插件:VisualvmGc。

 第二步:安装VisualvmGc插件

有两个方式:

方式一:jvisualvm工具直接下载安装

我们打开jvisualvm工具,然后我们可以找到工具菜单,选择插件,弹出配置框。

然后点击“可用插件”菜单,找到我们需要插件,勾选上之后,继续安装。

 等待安装完成就可以,然后我们工具里面就可以看到了。

方式二:去官网下载导入安装

官网:VisualVM: Plugins Centers

选择一个版本,然后去找到VisualvmGc插件;如图:

这里我们可以看他有很多插件供我们使用。比如常用的:Jconsole

下载之后保存在本地,供后面安装到 jvisualvm使用。

我们打开jvisualvm工具,然后我们可以找到工具菜单,选择插件,弹出配置框

再选择已下载菜单

 就可以导入我们上面官网下载的插件进行安装。 下面与上面一步是一样的操作。

总结

这里我们发现jdk自带很多插件供我们使用,我们可以根据自己需要安装对应的组件;非常方便。

至此:我们工具安装好了,但是为了演示内存分布,我们需要在idea配置安装一下对应插件。

第三步:idea安装VisualvM Launcher插件

1、首先打开idea,找出插件安装菜单Plugins,然后搜索插件VisualvM Launcher,进行安装。

安装好之后,我们可以看到idea已安装的组件菜单,然后点击我们安装好的插件,进行配置

 配置我们的JVisualVM.exe文件路径,和jdk安装的路径

 安装好之后,到此基础环境配置就结束了。

然后我们可以看见我们idea多出两个启动按钮:

后面我们测试就可以用它的。

第四步:演示young中eden、s0、s1垃圾回收过程

1、配置jvm堆大小

这个方便我们在本地环境模拟测试。

我们在idea中设置JVM堆内存大小为300m,eden区和s0、s1为8:1:1(默认老年代和新生代为2:1)
-Xms300m -Xmx300m -XX:SurvivorRatio=8 

 2、启动一个项目

随便一个demo项目都可以,可以自己写一个循环方法,线程睡眠等等都可以。

3、打开jvisualvm

然后点击VisualvmGc

 

 然后我们可以看到这几个分区:

我们可以看到s0,s1和eden区此时他们的内存变化,以及内存存储分布。

 刚开始进来我们看到eden区的内存在不断的增加,s0内存可能没有,可能有(项目刚启动是没有的,看项目加载的资源是否会存在s0)。s1的内存一定是没有的 。

但等一段时间,eden区满了之后,就会里面清理一次,然后s0清空,s1增加了内存

 再当eden区满了之后,又开始一轮交替,eden区清空,s1清空,剩余放在s0区。你会发现在没有其他操作清空下,他一直以此类推进行。

 

 当我们收到操作垃圾回收之后,我们发现:

全部被回收,然后先使用eden区,等eden区满了之后s0才会存放垃圾。

第五步:jvisualvm性能监控可视化工具使用

1、菜单使用介绍

1.1、概述

我们可以看到我们配置堆内存大小

 1.2、监控

这里我们可以右上角有几个可选菜单,用来查看面板的,以及可以进行收到垃圾回收,以及堆dump查看与下载

 比如我们点击堆dump可以看到堆内存的详细情况

 以及右击可以下载分析堆dump文件:

同时还支持与另一个堆文件比较

可以通过类分析发现这两个堆中那个类占的内存越来越多,没有被释放,就可能哪个造成的oom。 

 1.3、线程

我们在打开线程菜单,可以看到所有运行的线程以及线程的dump文件

 同样,我们可以下载线程的dump文件。

我们点击右上角的“线程Dump”按钮,可以看到如下线程的详细信息。

 下载堆内存之后从而可以检查死锁线程。

1.4、抽样器

我们可以打开到抽样的按钮器,里面有

cpu的抽样和内存抽样。

1、cpu抽样,我们点击之后,就可以实时运行,里面可以看到cpu样例和线程cpu时间实时分析。

 2、内存抽样同样也是,点击之后进行分析。同样有两个部分:

 第六步:总结

至此我们的 JVisualVM基本使用以及young分区模拟就结束完了,这里只是介绍本地工程,我们远程服务器一样是可以,只要链接远程服务器,就可以进行监控。

这里配置链接我们远程服务器就可以了。

后续我们将具体使用这个工具以及其他插件进行项目实战中各种场景分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/693390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轻量级数据交换格式:jsoncpp

"这不属于我&#xff0c;因为沉默背后&#xff0c;也有冲动" 一、认识json (1) 为什么有那么多的数据交换格式&#xff1f; 比如说&#xff0c;现在我有下面的数据: #include <iostream> #include <string>int main() {std::string name "张三&q…

比较两个突出的node.js框架:koa和express

目录 一、Koa 和 Express 的介绍 二、Koa 和 Express 的区别 1.异步编程方式不同 2.错误处理方式不同 三、Koa 和 Express 的优缺点 1.Express 的优点 2.Express 的缺点 3.Koa 的优点 4.Koa 的缺点 总结 接上文讲述了 koa框架&#xff0c;这边文章比较一下这两个突出…

CentOS系统忘记密码了改怎么修改重置103.88.34.X

首先&#xff0c;打开centos7&#xff0c; 在正常系统入口按↑和↓"e"&#xff0c;会进入edit模式 然后找到以“Linux16”开头的行&#xff0c;在该行的最后面输入“init/bin/sh” 按下ctrlx组合键来启动系统 接下来再输入“mount -o remount,rw /”(注意mount与…

ceph对象存储使用总结

ceph对象存储使用总结 大纲 基础概念安装对象存储网关RADOS网关配置对象存储网关RADOS网关修改RADOS网关端口修改支持https访问RADOS网关使用s3cmd操作对象存储Ceph dashboard管理RADOS网关使用java程序操作对象存储 基础准备 操作系统 ubuntu~18.04ceph版本 Octopus v15.2…

适用于 3DS Max 和 Cinema 4D 的 Chaos Corona 10重磅推出!

Chaos 发布了 Corona 10&#xff0c;适用于3DS Max和Cinema 4D 的渲染器的最新版本 &#xff01;Corona 10 对软件的多项现有功能进行了更新&#xff0c;包括贴花、体积渲染、景深和程序云。 目前渲云云渲染已支持Corona 10&#xff0c;支持批量渲染&#xff0c;批量出结果&am…

chatgpt赋能python:介绍Python语言

介绍Python语言 Python是一门易学易用的编程语言&#xff0c;它被广泛应用于各种领域&#xff0c;包括数据科学、机器学习、人工智能、Web开发等。自1991年首次推出以来&#xff0c;Python不断演进和发展&#xff0c;如今已经成为行业内一种不可或缺的编程语言。它在可读性和语…

chatgpt赋能python:Python词汇量为什么很重要?

Python词汇量为什么很重要&#xff1f; 作为一个有10年Python编程经验的工程师&#xff0c;我有着非常深刻的体会&#xff0c;词汇量对于掌握这门编程语言来说是非常重要的。在这篇文章中&#xff0c;我将重点讨论Python词汇量为什么很重要&#xff0c;以及如何提升你的Python…

STM32的五个时钟源

①HSI是高速内部时钟&#xff0c;RC振荡器&#xff0c;频率为8MHz。 ②HSE是高速外部时钟&#xff0c;可接石英/陶瓷谐振器&#xff0c;或者接外部时钟源&#xff0c;频率范围为4MHz~16MHz。 ③LSI是低速内部时钟&#xff0c;RC振荡器&#xff0c;频率为40kHz。 ④LSE是低速外…

2核4G服务器_4M带宽_CPU性能测评_60G系统盘

阿里云2核4G服务器297元一年、4M公网带宽、60G系统盘&#xff0c;阿里云轻量应用服务器2核4G4M带宽配置一年297.98元&#xff0c;2核2G3M带宽轻量服务器一年108元12个月&#xff0c;如下图&#xff1a; 目录 阿里云2核4G4M轻量应用服务器 2核4G服务器限制条件 轻量服务器介…

使用Spring Boot、MyBatis Plus和Elasticsearch的简单示例

下面是一个使用Spring Boot、MyBatis Plus和Elasticsearch的简单示例&#xff1a; 首先&#xff0c;在pom.xml文件中添加以下依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elast…

《Pytorch深度学习和图神经网络(卷 1)》学习笔记——第五章

全连接神经网络 隐藏层的节点数决定了模型拟合能力&#xff0c;如果在单隐藏层设置足够多的节点&#xff0c;理论上可以拟合世界上各种维度的数据进行任意规则的分类&#xff0c;但会过拟合。 隐藏层的数量决定了其泛化能力&#xff0c;层数越多&#xff0c;推理的能力越强&am…

【前端工具】使用Echats生成关系图谱,可展开折叠

目录 一、需求背景与效果 二、echarts源码 一、需求背景与效果 根据服务关系制作关系图谱&#xff0c;echarts官方关系图没有想要的案例&#xff0c;网上也没有好的效果&#xff0c;故参考网上已有的部分案例&#xff0c;自行写了一个&#xff0c;效果还不错。 当前echarts…

Centos7单机安装Redis

安装Redis依赖 Redis是基于C语言&#xff0c;因此首先需要安装Redis所需要的gcc依赖&#xff1a; yum install -y gcc tcl ​ 上传安装包并解压 上传安装包redis-6.2.12至/home目录下 ​ # 解压 tar -xzf redis-6.2.12.tar.gz # 安装 cd redis-6.2.12 make && mak…

react ant table设置动态scroll,且某些列的长度固定

设置scroll x的值为列的个数*100 1.代码 const columns [ {title: 料号描述,dataIndex: itemDesc,align:left,width: 200,ellipsis: true,} ]<EditableProTableclassName"details-table"columns{columns}loading{loading}rowKey"id"value{dataSource}…

C++笔记之自引用结构体

C笔记之自引用结构体 code review! 文章目录 C笔记之自引用结构体1.在结构体中引用相同类型的结构体&#xff0c;并且可以使用指针或引用来实现。2.自引用结构体构建链表3.自引用结构体构建二叉树附:代码随想录——链表定义附:代码随想录——二叉树定义 1.在结构体中引用相同…

分布式幂等问题解决方案

目录 一 背景 二 什么是幂等 三 解决方案三部曲 第一部曲&#xff1a;识别相同请求 第二部曲&#xff1a;列出并减少副作用的分析维度 第三部曲&#xff1a;识别细粒度副作用&#xff0c;针对性设计解决方案 四 总结 一 背景 分布式系统由众多微服务组成&#xff0c;微…

从0到1搭建Springboot整合Quartz定时任务框架(保姆级教学+Gitee源码)

前言&#xff1a;最近学习了目前主流的若依框架&#xff0c;这是一个非常优秀的开源项目&#xff0c;故此我这边把它的源码全部剖析了一遍&#xff0c;简化了它的框架&#xff0c;我会通过这篇博客详细讲解我是如何进行推敲和从0到1搭建这个项目的流程。 目录 一、Quartz简介 …

Java并发(十二)----线程应用之多线程解决烧水泡茶问题

1、背景 统筹方法&#xff0c;是一种安排工作进程的数学方法。它的实用范围极广泛&#xff0c;在企业管理和基本建设中&#xff0c;以及关系复杂的科研项目的组织与管理中&#xff0c;都可以应用。 怎样应用呢&#xff1f;主要是把工序安排好。 比如&#xff0c;想泡壶茶喝。…

【前后端分离开发及项目部署流程】

文章目录 前后端分离开发技术1 前后端分离开发1.1 介绍1.2 开发流程1.3 前端技术栈&#xff08;了解&#xff09; 2 Yapi&#xff08;定义API接口&#xff09;2.1 介绍2.2 使用 3 Swagger3.1 介绍3.2 使用方式3.3 常用注解 4 项目部署4.1 部署架构4.2 部署环境说明4.3 部署前端…

chatgpt赋能python:如何使用Python访问共享目录——让共享变得简单易行

如何使用Python访问共享目录 —— 让共享变得简单易行 作为一种高效而强大的编程语言&#xff0c;Python拥有各种各样的应用。其中一个非常重要的应用场景就是对共享目录的访问和操作。无论是在家庭网络&#xff0c;企业内网或者云存储平台&#xff0c;共享目录的重要性毋庸置…